<!DOCTYPE html>
<html lang="zh-CN" dir="ltr">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>JS中数字相关知识点 | 龙陌的博客</title>
    <meta name="description" content="基于vite为基础搭建的风格脚手架,提供多种模板以便于更高效的解决业务需求！">
    <meta name="generator" content="VitePress v1.0.1">
    <link rel="preload stylesheet" href="/long-press/assets/style.BL65bImA.css" as="style">
    
    <script type="module" src="/long-press/assets/app.CKtEL6mi.js"></script>
    <link rel="preload" href="/long-press/assets/inter-roman-latin.Bu8hRsVA.woff2" as="font" type="font/woff2" crossorigin="">
    <link rel="modulepreload" href="/long-press/assets/chunks/framework.Cp_of1Ge.js">
    <link rel="modulepreload" href="/long-press/assets/chunks/theme.hH2tFlJ7.js">
    <link rel="modulepreload" href="/long-press/assets/chunks/PageInfo.vue_vue_type_script_setup_true_lang.9LRWY4ho.js">
    <link rel="modulepreload" href="/long-press/assets/chunks/dayjs.min.BrPrGVY0.js">
    <link rel="modulepreload" href="/long-press/assets/guide_数字相关知识.md.BRzTdbnI.lean.js">
    <link rel="icon" type="image/svg+xml" href="logo.ico">
    <meta name="author" content="龙陌">
    <meta name="referrer" content="no-referrer">
    <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
    <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
  </head>
  <body>
    <div id="app"><div class="Layout" data-v-4c760b95><!--[--><!--]--><!--[--><span tabindex="-1" data-v-16c53dd7></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-16c53dd7> Skip to content </a><!--]--><!----><header class="VPNav" data-v-4c760b95 data-v-0a463f3f><div class="VPNavBar has-sidebar top" data-v-0a463f3f data-v-460dba10><div class="wrapper" data-v-460dba10><div class="container" data-v-460dba10><div class="title" data-v-460dba10><div class="VPNavBarTitle has-sidebar" data-v-460dba10 data-v-ef777607><a class="title" href="/long-press/" data-v-ef777607><!--[--><!--]--><!--[--><img class="VPImage logo" src="/long-press/logo.ico" alt data-v-9cb742f0><!--]--><span data-v-ef777607>龙陌的博客</span><!--[--><!--]--></a></div></div><div class="content" data-v-460dba10><div class="content-body" data-v-460dba10><!--[--><!--]--><div class="VPNavBarSearch search" data-v-460dba10><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><span class="DocSearch-Button-Key">Meta</span><span class="DocSearch-Button-Key">K</span></span></button></div></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-460dba10 data-v-b298d4fd><span id="main-nav-aria-label" class="visually-hidden" data-v-b298d4fd>Main Navigation</span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/long-press/" tabindex="0" data-v-b298d4fd data-v-5d92c3a7><!--[--><span data-v-5d92c3a7>💻 首页</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/long-press/guide/" tabindex="0" data-v-b298d4fd data-v-5d92c3a7><!--[--><span data-v-5d92c3a7>💡 指南</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/long-press/tools/" tabindex="0" data-v-b298d4fd data-v-5d92c3a7><!--[--><span data-v-5d92c3a7>🔧 编程工具</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/long-press/utils/" tabindex="0" data-v-b298d4fd data-v-5d92c3a7><!--[--><span data-v-5d92c3a7>🔧 常用工具类</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/long-press/standard/" tabindex="0" data-v-b298d4fd data-v-5d92c3a7><!--[--><span data-v-5d92c3a7>📋 前端规范</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/long-press/react/React实战,设计模式与最佳实践/" tabindex="0" data-v-b298d4fd data-v-5d92c3a7><!--[--><span data-v-5d92c3a7>⭐ React</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/long-press/typescript/" tabindex="0" data-v-b298d4fd data-v-5d92c3a7><!--[--><span data-v-5d92c3a7>⭐ TypeScript</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/long-press/css3/" tabindex="0" data-v-b298d4fd data-v-5d92c3a7><!--[--><span data-v-5d92c3a7>⭐ Css3</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/long-press/electron/" tabindex="0" data-v-b298d4fd data-v-5d92c3a7><!--[--><span data-v-5d92c3a7>⭐ Electron</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/long-press/linux/linux%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4" tabindex="0" data-v-b298d4fd data-v-5d92c3a7><!--[--><span data-v-5d92c3a7>⭐ Linux</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-460dba10 data-v-815abbf3><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="Switch to dark theme" aria-checked="false" data-v-815abbf3 data-v-34066301 data-v-b6ab5a8a><span class="check" data-v-b6ab5a8a><span class="icon" data-v-b6ab5a8a><!--[--><span class="vpi-sun sun" data-v-34066301></span><span class="vpi-moon moon" data-v-34066301></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-460dba10 data-v-a0947e71 data-v-2fe70121><!--[--><a class="VPSocialLink no-icon" href="https://vitepress.vuejs.org/guide/getting-started" aria-label="github" target="_blank" rel="noopener" data-v-2fe70121 data-v-39684c0a><span class="vpi-social-github" /></a><a class="VPSocialLink no-icon" href="https://space.bilibili.com/248956095" aria-label target="_blank" rel="noopener" data-v-2fe70121 data-v-39684c0a><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="20" height="20"  viewBox="0 0 512 512" >
    <path fill="currentColor" d="M488.6 104.1c16.7 18.1 24.4 39.7 23.3 65.7v202.4c-.4 26.4-9.2 48.1-26.5 65.1c-17.2 17-39.1 25.9-65.5 26.7H92.02c-26.45-.8-48.21-9.8-65.28-27.2C9.682 419.4.767 396.5 0 368.2V169.8c.767-26 9.682-47.6 26.74-65.7C43.81 87.75 65.57 78.77 92.02 78h29.38L96.05 52.19c-5.75-5.73-8.63-13-8.63-21.79c0-8.8 2.88-16.06 8.63-21.797C101.8 2.868 109.1 0 117.9 0s16.1 2.868 21.9 8.603L213.1 78h88l74.5-69.397C381.7 2.868 389.2 0 398 0c8.8 0 16.1 2.868 21.9 8.603c5.7 5.737 8.6 12.997 8.6 21.797c0 8.79-2.9 16.06-8.6 21.79L394.6 78h29.3c26.4.77 48 9.75 64.7 26.1zm-38.8 69.7c-.4-9.6-3.7-17.4-10.7-23.5c-5.2-6.1-14-9.4-22.7-9.8H96.05c-9.59.4-17.45 3.7-23.58 9.8c-6.14 6.1-9.4 13.9-9.78 23.5v194.4c0 9.2 3.26 17 9.78 23.5s14.38 9.8 23.58 9.8H416.4c9.2 0 17-3.3 23.3-9.8c6.3-6.5 9.7-14.3 10.1-23.5V173.8zm-264.3 42.7c6.3 6.3 9.7 14.1 10.1 23.2V273c-.4 9.2-3.7 16.9-9.8 23.2c-6.2 6.3-14 9.5-23.6 9.5c-9.6 0-17.5-3.2-23.6-9.5c-6.1-6.3-9.4-14-9.8-23.2v-33.3c.4-9.1 3.8-16.9 10.1-23.2c6.3-6.3 13.2-9.6 23.3-10c9.2.4 17 3.7 23.3 10zm191.5 0c6.3 6.3 9.7 14.1 10.1 23.2V273c-.4 9.2-3.7 16.9-9.8 23.2c-6.1 6.3-14 9.5-23.6 9.5c-9.6 0-17.4-3.2-23.6-9.5c-7-6.3-9.4-14-9.7-23.2v-33.3c.3-9.1 3.7-16.9 10-23.2c6.3-6.3 14.1-9.6 23.3-10c9.2.4 17 3.7 23.3 10z"></path>
  </svg></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-460dba10 data-v-b81df352 data-v-603fa601><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-603fa601><span class="vpi-more-horizontal icon" data-v-603fa601></span></button><div class="menu" data-v-603fa601><div class="VPMenu" data-v-603fa601 data-v-61aada2f><!----><!--[--><!--[--><!----><div class="group" data-v-b81df352><div class="item appearance" data-v-b81df352><p class="label" data-v-b81df352>外观</p><div class="appearance-action" data-v-b81df352><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="Switch to dark theme" aria-checked="false" data-v-b81df352 data-v-34066301 data-v-b6ab5a8a><span class="check" data-v-b6ab5a8a><span class="icon" data-v-b6ab5a8a><!--[--><span class="vpi-sun sun" data-v-34066301></span><span class="vpi-moon moon" data-v-34066301></span><!--]--></span></span></button></div></div></div><div class="group" data-v-b81df352><div class="item social-links" data-v-b81df352><div class="VPSocialLinks social-links-list" data-v-b81df352 data-v-2fe70121><!--[--><a class="VPSocialLink no-icon" href="https://vitepress.vuejs.org/guide/getting-started" aria-label="github" target="_blank" rel="noopener" data-v-2fe70121 data-v-39684c0a><span class="vpi-social-github" /></a><a class="VPSocialLink no-icon" href="https://space.bilibili.com/248956095" aria-label target="_blank" rel="noopener" data-v-2fe70121 data-v-39684c0a><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="20" height="20"  viewBox="0 0 512 512" >
    <path fill="currentColor" d="M488.6 104.1c16.7 18.1 24.4 39.7 23.3 65.7v202.4c-.4 26.4-9.2 48.1-26.5 65.1c-17.2 17-39.1 25.9-65.5 26.7H92.02c-26.45-.8-48.21-9.8-65.28-27.2C9.682 419.4.767 396.5 0 368.2V169.8c.767-26 9.682-47.6 26.74-65.7C43.81 87.75 65.57 78.77 92.02 78h29.38L96.05 52.19c-5.75-5.73-8.63-13-8.63-21.79c0-8.8 2.88-16.06 8.63-21.797C101.8 2.868 109.1 0 117.9 0s16.1 2.868 21.9 8.603L213.1 78h88l74.5-69.397C381.7 2.868 389.2 0 398 0c8.8 0 16.1 2.868 21.9 8.603c5.7 5.737 8.6 12.997 8.6 21.797c0 8.79-2.9 16.06-8.6 21.79L394.6 78h29.3c26.4.77 48 9.75 64.7 26.1zm-38.8 69.7c-.4-9.6-3.7-17.4-10.7-23.5c-5.2-6.1-14-9.4-22.7-9.8H96.05c-9.59.4-17.45 3.7-23.58 9.8c-6.14 6.1-9.4 13.9-9.78 23.5v194.4c0 9.2 3.26 17 9.78 23.5s14.38 9.8 23.58 9.8H416.4c9.2 0 17-3.3 23.3-9.8c6.3-6.5 9.7-14.3 10.1-23.5V173.8zm-264.3 42.7c6.3 6.3 9.7 14.1 10.1 23.2V273c-.4 9.2-3.7 16.9-9.8 23.2c-6.2 6.3-14 9.5-23.6 9.5c-9.6 0-17.5-3.2-23.6-9.5c-6.1-6.3-9.4-14-9.8-23.2v-33.3c.4-9.1 3.8-16.9 10.1-23.2c6.3-6.3 13.2-9.6 23.3-10c9.2.4 17 3.7 23.3 10zm191.5 0c6.3 6.3 9.7 14.1 10.1 23.2V273c-.4 9.2-3.7 16.9-9.8 23.2c-6.1 6.3-14 9.5-23.6 9.5c-9.6 0-17.4-3.2-23.6-9.5c-7-6.3-9.4-14-9.7-23.2v-33.3c.3-9.1 3.7-16.9 10-23.2c6.3-6.3 14.1-9.6 23.3-10c9.2.4 17 3.7 23.3 10z"></path>
  </svg></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-460dba10 data-v-156ee799><span class="container" data-v-156ee799><span class="top" data-v-156ee799></span><span class="middle" data-v-156ee799></span><span class="bottom" data-v-156ee799></span></span></button></div></div></div></div><div class="divider" data-v-460dba10><div class="divider-line" data-v-460dba10></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-4c760b95 data-v-bc5dff2d><div class="container" data-v-bc5dff2d><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-bc5dff2d><span class="vpi-align-left menu-icon" data-v-bc5dff2d></span><span class="menu-text" data-v-bc5dff2d>归档</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-bc5dff2d data-v-fe28bfa1><button data-v-fe28bfa1>返回顶部</button><!----></div></div></div><aside class="VPSidebar" data-v-4c760b95 data-v-e1756f1c><div class="curtain" data-v-e1756f1c></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-e1756f1c><span class="visually-hidden" id="sidebar-aria-label" data-v-e1756f1c> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="group" data-v-e1756f1c><section class="VPSidebarItem level-0" data-v-e1756f1c data-v-b147bcc8><div class="item" role="button" tabindex="0" data-v-b147bcc8><div class="indicator" data-v-b147bcc8></div><h2 class="text" data-v-b147bcc8>基础</h2><!----></div><div class="items" data-v-b147bcc8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b147bcc8 data-v-b147bcc8><div class="item" data-v-b147bcc8><div class="indicator" data-v-b147bcc8></div><a class="VPLink link link" href="/long-press/guide/quickstart" data-v-b147bcc8><!--[--><p class="text" data-v-b147bcc8>快速开始</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b147bcc8 data-v-b147bcc8><div class="item" data-v-b147bcc8><div class="indicator" data-v-b147bcc8></div><a class="VPLink link link" href="/long-press/guide/Markdown%E8%AF%AD%E6%B3%95" data-v-b147bcc8><!--[--><p class="text" data-v-b147bcc8>Markdown语法</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-e1756f1c><section class="VPSidebarItem level-0" data-v-e1756f1c data-v-b147bcc8><div class="item" role="button" tabindex="0" data-v-b147bcc8><div class="indicator" data-v-b147bcc8></div><h2 class="text" data-v-b147bcc8>进阶</h2><!----></div><div class="items" data-v-b147bcc8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b147bcc8 data-v-b147bcc8><div class="item" data-v-b147bcc8><div class="indicator" data-v-b147bcc8></div><a class="VPLink link link" href="/long-press/guide/%E6%89%93%E5%8C%85%E6%8C%87%E5%8D%97" data-v-b147bcc8><!--[--><p class="text" data-v-b147bcc8>打包指南</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-4c760b95 data-v-308553a0><div class="VPDoc has-sidebar has-aside" data-v-308553a0 data-v-e512d8d8><!--[--><!--]--><div class="container" data-v-e512d8d8><div class="aside" data-v-e512d8d8><div class="aside-curtain" data-v-e512d8d8></div><div class="aside-container" data-v-e512d8d8><div class="aside-content" data-v-e512d8d8><div class="VPDocAside" data-v-e512d8d8 data-v-bca3b04c><!--[--><!--]--><!--[--><!--]--><div class="VPDocAsideOutline" role="navigation" data-v-bca3b04c data-v-ff0b6666><div class="content" data-v-ff0b6666><div class="outline-marker" data-v-ff0b6666></div><div class="outline-title" role="heading" aria-level="2" data-v-ff0b6666>本页目录</div><nav aria-labelledby="doc-outline-aria-label" data-v-ff0b6666><span class="visually-hidden" id="doc-outline-aria-label" data-v-ff0b6666> Table of Contents for current page </span><ul class="VPDocOutlineItem root" data-v-ff0b6666 data-v-69d389fc><!--[--><!--]--></ul></nav></div></div><!--[--><!--]--><div class="spacer" data-v-bca3b04c></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-e512d8d8><div class="content-container" data-v-e512d8d8><!--[--><!--]--><main class="main" data-v-e512d8d8><div style="position:relative;" class="vp-doc _long-press_guide_%E6%95%B0%E5%AD%97%E7%9B%B8%E5%85%B3%E7%9F%A5%E8%AF%86" data-v-e512d8d8><div><h1 id="js中数字相关知识点" tabindex="-1">JS中数字相关知识点 <a class="header-anchor" href="#js中数字相关知识点" aria-label="Permalink to &quot;JS中数字相关知识点&quot;">​</a></h1><h2 id="术语" tabindex="-1">术语 <a class="header-anchor" href="#术语" aria-label="Permalink to &quot;术语&quot;">​</a></h2><h3 id="radix-从-2-到-36-的整数-表示进制的基数。" tabindex="-1">radix 从 2 到 36 的整数，表示进制的基数。 <a class="header-anchor" href="#radix-从-2-到-36-的整数-表示进制的基数。" aria-label="Permalink to &quot;radix 从 2 到 36 的整数，表示进制的基数。&quot;">​</a></h3><p>例如指定 16 表示被解析值是十六进制数。 如果超出这个范围，将返回 NaN。 假如指定 0 或未指定，基数将会根据字符串的值进行推算。 注意，推算的结果不会永远是默认值 10</p><h3 id="digits-小数点后的位数" tabindex="-1">digits 小数点后的位数 <a class="header-anchor" href="#digits-小数点后的位数" aria-label="Permalink to &quot;digits 小数点后的位数&quot;">​</a></h3><p>应该是一个介于 0 和 100 之间的值，包括 0 和 100。 如果这个参数被省略，则被视为 0。</p><h3 id="进制数" tabindex="-1">进制数 <a class="header-anchor" href="#进制数" aria-label="Permalink to &quot;进制数&quot;">​</a></h3><table><thead><tr><th>名称</th><th>英文单词</th><th>缩写</th></tr></thead><tbody><tr><td>十进制数</td><td>decimal</td><td>dec</td></tr><tr><td>二进制</td><td>binary</td><td>bin</td></tr><tr><td>八进制</td><td>octal</td><td>oct</td></tr><tr><td>十六进制</td><td>hexadecimal</td><td>hex</td></tr></tbody></table><h3 id="pi是圆的周长与直径的比值-e是自然对数的基数-也被称为-欧拉数-。" tabindex="-1">Pi是圆的周长与直径的比值，e是自然对数的基数，也被称为 &quot;欧拉数&quot;。 <a class="header-anchor" href="#pi是圆的周长与直径的比值-e是自然对数的基数-也被称为-欧拉数-。" aria-label="Permalink to &quot;Pi是圆的周长与直径的比值，e是自然对数的基数，也被称为 &quot;欧拉数&quot;。&quot;">​</a></h3><div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#0070C1;--shiki-dark:#E5C07B;"> PI</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;"> Math</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#0070C1;--shiki-dark:#E06C75;">PI</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#0070C1;--shiki-dark:#E5C07B;"> E</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;"> Math</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#0070C1;--shiki-dark:#E06C75;">E</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><h2 id="数字书写技巧" tabindex="-1">数字书写技巧 <a class="header-anchor" href="#数字书写技巧" aria-label="Permalink to &quot;数字书写技巧&quot;">​</a></h2><p>比如0.1可以省略前面的0,直接写为.1</p><p>比如 10000000 可以写为 100_000_000</p><h2 id="进制间的转换" tabindex="-1">进制间的转换 <a class="header-anchor" href="#进制间的转换" aria-label="Permalink to &quot;进制间的转换&quot;">​</a></h2><h3 id="js中十进制数字如何转为二进制" tabindex="-1">js中十进制数字如何转为二进制? <a class="header-anchor" href="#js中十进制数字如何转为二进制" aria-label="Permalink to &quot;js中十进制数字如何转为二进制?&quot;">​</a></h3><p>在JavaScript中，将十进制数字转换为二进制字符串通常可以通过使用内建的<code>toString()</code>方法实现。 这个方法接受一个参数，用于指定要转换的目标进制。对于二进制转换，只需传入基数2即可。以下是一个简单的示例：</p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">function</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> decimalToBinary</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">decimalNumber</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) {</span></span>
<span class="line"><span style="--shiki-light:#AF00DB;--shiki-dark:#C678DD;">	return</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;"> decimalNumber</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span>
<span class="line"><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 使用示例</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> decimal</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 42</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">decimalToBinary</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">decimal</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: &quot;101010&quot;</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div><p>上述代码定义了一个名为<code>decimalToBinary</code>的函数，它接收一个十进制数字作为参数，并通过调用<code>toString(2)</code> 将其转换为二进制表示。 当运行这段代码并传入十进制数字<code>42</code>时，控制台会输出其对应的二进制字符串<code>&quot;101010&quot;</code>。</p><p>这种方法适用于正整数、负整数以及包含小数部分的十进制数。 如果需要处理负数或带有小数的十进制数，<code>toString(2)</code>同样能够正确地转换它们到相应的二进制形式。</p><p>请注意，对于非常大的数字或者有特定位数要求的转换，可能需要额外的处理逻辑来确保结果符合预期。 例如，如果需要控制输出二进制字符串的位数，可以自行添加填充前导零或其他格式化操作。 但基本的十进制到二进制转换可以直接通过<code>toString(2)</code>完成。</p><blockquote><p><code>57.toString(2)</code> 为啥57必须要被()包裹？否则会报语法错误 <code>SyntaxError: Identifier directly after number</code> 在JavaScript中，直接对数值字面量如 <code>57</code> 调用方法（如 <code>toString()</code>）会导致语法错误。 这是因为JavaScript解析器期望在点号 <code>.</code> 后面看到一个标识符（如变量名或属性名），而不是一个数值。 错误理解：数字后边跟点号 <code>.</code>,点号 <code>.</code> 后面可能会被认为是小数位!!! 因此，确实需要使用括号将数值字面量转换为一个<strong>表达式</strong>，使其可以作为方法调用的对象。 <strong>正确示例：</strong></p></blockquote><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">57</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">).</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 正确：使用括号将数值字面量转换为表达式，然后调用 toString() 方法</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br></div></div><blockquote><p>因此，使用圆括号包裹 <code>57</code> 是必需的，以避免语法错误并正确地将十进制数值 <code>57</code>转换为二进制字符串。 记住，整数在调用方法之前需要放在括号里</p></blockquote><h4 id="tostring-点前面的只能是数字才会转为其他进制" tabindex="-1">toString() 点前面的只能是数字才会转为其他进制 <a class="header-anchor" href="#tostring-点前面的只能是数字才会转为其他进制" aria-label="Permalink to &quot;toString() 点前面的只能是数字才会转为其他进制&quot;">​</a></h4><p><code>toString()</code> 方法确实要求点 (<code>.</code>) 前面的部分是一个数值（或可隐式转换为数值的表达式），以便进行进制转换。 如果点前面是字符串类型的数据，直接调用 <code>toString()</code> 并传入进制参数将不会进行进制转换，而是返回该字符串本身的字符串表示。</p><h4 id="tostring-无法将二进制数转为10进制数" tabindex="-1">toString()无法将二进制数转为10进制数！！！！ <a class="header-anchor" href="#tostring-无法将二进制数转为10进制数" aria-label="Permalink to &quot;toString()无法将二进制数转为10进制数！！！！&quot;">​</a></h4><p>toString() 方法的典型用法是针对一个已经存在于内存中的数值（如变量或表达式结果），将该数值按照指定的基数（如2、8、16等）转换为相应的字符串表示</p><div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">111001</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">).</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">10</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 无法将二进制数转为10进制数！！！！</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br></div></div><p>对于已经表示为字符串形式的二进制数（如 &quot;101010&quot;），如果希望将其转换为其他进制的字符串，应首先使用 parseInt() 函数将该字符串解析为数值，然后再调用 toString() 方法进行转换：</p><div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#0070C1;--shiki-dark:#E5C07B;"> binaryString</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &quot;101010&quot;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#0070C1;--shiki-dark:#E5C07B;"> decimalNumber</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> parseInt</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">binaryString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 解析为十进制数</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#0070C1;--shiki-dark:#E5C07B;"> octalString</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;"> decimalNumber</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">8</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 转换为八进制字符串</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">octalString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: &quot;52&quot;</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div><p>在这个例子中，我们先用 parseInt(binaryString, 2) 将二进制字符串 &quot;101010&quot; 解析为十进制数值 42。 接着，decimalNumber.toString(8) 将这个十进制数值转换为八进制字符串 &quot;52&quot;。</p><h4 id="tostring能使其他进制的数字转为二进制吗-还是说只能十进制转二进制-或者十进制还能转为其他进制数吗" tabindex="-1">toString能使其他进制的数字转为二进制吗，还是说只能十进制转二进制，或者十进制还能转为其他进制数吗？ <a class="header-anchor" href="#tostring能使其他进制的数字转为二进制吗-还是说只能十进制转二进制-或者十进制还能转为其他进制数吗" aria-label="Permalink to &quot;toString能使其他进制的数字转为二进制吗，还是说只能十进制转二进制，或者十进制还能转为其他进制数吗？&quot;">​</a></h4><p><code>toString()</code> 方法不仅可以将十进制数转换为二进制，实际上它可以将任何数值（包括但不限于十进制数）转换为指定进制的字符串表示。 无论是整数、浮点数，还是正数、负数，只要是一个有效的 JavaScript 数值，都可以使用 <code>toString()</code> 方法将其转换为二进制、八进制、十六进制等其他进制的字符串。</p><p>以下是一些使用 <code>toString()</code> 方法进行不同进制转换的例子：</p><p><strong>十进制转二进制：</strong></p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> decimal</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 42</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> binary</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;"> decimal</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">binary</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: &quot;101010&quot;</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p><strong>八进制转二进制：</strong></p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> octal</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 0o52</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">; </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 八进制数 52</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> binaryFromOctal</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;"> octal</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">binaryFromOctal</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: &quot;101010&quot;</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p><strong>十六进制转二进制：</strong></p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> hexadecimal</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 0x2A</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">; </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 十六进制数 2A</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> binaryFromHexadecimal</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;"> hexadecimal</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">binaryFromHexadecimal</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: &quot;101010&quot;</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p>此外，<code>toString()</code> 方法也可以将十进制数转换为其他进制，如八进制、十六进制等：</p><p><strong>十进制转八进制：</strong></p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> decimal</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 42</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> octal</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;"> decimal</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">8</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">octal</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: &quot;52&quot;</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p><strong>十进制转十六进制：</strong></p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> decimal</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 42</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> hexadecimal</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;"> decimal</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">16</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">hexadecimal</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: &quot;2A&quot;</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p>总结来说，<code>toString()</code> 方法支持将任意数值（包括但不限于十进制数）转换为指定进制（如二进制、八进制、十六进制等）的字符串表示。 只需在调用 <code>toString()</code> 时传入相应进制的基数（2、8、16 等）作为参数即可。</p><h4 id="更详细的number-prototype-tostring-使用见mdn" tabindex="-1">更详细的Number.prototype.toString()使用见MDN <a class="header-anchor" href="#更详细的number-prototype-tostring-使用见mdn" aria-label="Permalink to &quot;更详细的Number.prototype.toString()使用见MDN&quot;">​</a></h4><p><a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/toString" target="_blank" rel="noreferrer">https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/toString</a></p><h3 id="js中二进制数字如何转为十进制" tabindex="-1">js中二进制数字如何转为十进制? <a class="header-anchor" href="#js中二进制数字如何转为十进制" aria-label="Permalink to &quot;js中二进制数字如何转为十进制?&quot;">​</a></h3><p>在JavaScript中，将二进制数字（以字符串形式表示）转换为十进制整数可以使用内置的<code>parseInt()</code>函数。 这个函数接受两个参数：要解析的<strong>字符串</strong>和该字符串所表示数字的基数。 对于二进制转换，应传入基数2。以下是一个示例：</p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">function</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> binaryToDecimal</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">binaryString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) {</span></span>
<span class="line"><span style="--shiki-light:#AF00DB;--shiki-dark:#C678DD;">	return</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> parseInt</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">binaryString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span>
<span class="line"><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 使用示例</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> binary</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &quot;101010&quot;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">binaryToDecimal</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">binary</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: 42</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div><p>parseInt(binaryString, 2)将二进制字符串&quot;101010&quot;解析为一个十进制整数，其中第二个参数2指定了输入字符串是二进制表示</p><p>上述代码定义了一个名为<code>binaryToDecimal</code>的函数，它接收一个二进制字符串作为参数，并通过调用<code>parseInt(binaryString, 2)</code> 将其转换为十进制整数。 当运行这段代码并传入二进制字符串<code>&quot;101010&quot;</code>时，控制台会输出其对应的十进制数值<code>42</code>。</p><p>这种方法适用于任何有效的二进制字符串，只要它们只包含字符<code>0</code>和<code>1</code>。</p><p>总之，使用JavaScript的<code>parseInt()</code>函数并指定基数为2，即可轻松将二进制字符串转换为十进制整数。</p><h4 id="parseint-接收的是字符串-但也可以接收数字" tabindex="-1"><code>parseInt()</code> 接收的是字符串，但也可以接收数字 <a class="header-anchor" href="#parseint-接收的是字符串-但也可以接收数字" aria-label="Permalink to &quot;`parseInt()` 接收的是字符串，但也可以接收数字&quot;">​</a></h4><p><code>parseInt()</code> 函数可以接收字符串作为其第一个参数。 它的设计目的之一就是将包含数字字符的字符串转换为对应的整数值。当传递一个字符串给 <code>parseInt()</code> 时，它会尝试从该字符串的起始位置开始解析一个整数，直到遇到非数字字符为止。 非数字字符会被忽略，解析过程中遇到的第一个非数字字符标志着解析结束。</p><p>例如：</p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> stringInput</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &quot;345abc&quot;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> parsedNumber</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> parseInt</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">stringInput</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">10</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">parsedNumber</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: 345</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p>在这个例子中，<code>parseInt(stringInput, 10)</code> 接收到字符串 <code>&quot;345abc&quot;</code>。 它成功解析出了字符串开头的数字字符 <code>&quot;345&quot;</code>，并将它们转换为对应的十进制整数 <code>345</code>。 后面的非数字字符 <code>&quot;abc&quot;</code> 被忽略。</p><p>需要注意的是，<code>parseInt()</code> 的第二个参数是可选的，用于指定字符串中数字的基数（进制）。 如果省略此参数或传入 <code>10</code>，则假定数字是十进制的。 如果字符串代表的是其他进制的数（如二进制、八进制或十六进制），则应传入相应的基数（如 <code>2</code>、<code>8</code> 或 <code>16</code>）以正确解析。</p><p>总结来说，<code>parseInt()</code> 函数完全可以接收字符串作为输入，并尝试从中解析出一个整数值。 在实际应用中，它常被用来将用户输入、JSON数据中的字符串数字字段等转换为可供程序进一步处理的整数类型。 虽然 <code>parseInt()</code> 函数主要是设计用来处理包含数字字符的字符串，但实际上它也可以接收一个数字作为其第一个参数。 当传入一个数字时，JavaScript引擎会隐式地将该数字转换为字符串，然后 <code>parseInt()</code> 再对该字符串进行解析。</p><p>例如：</p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> numericInput</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 345</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> parsedNumber</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> parseInt</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">numericInput</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">10</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">parsedNumber</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: 345</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p>在这个例子中，尽管 <code>numericInput</code> 是一个数字类型的变量，<code>parseInt()</code> 函数仍然可以正常工作。 这是因为 JavaScript 在函数调用时会自动将数字 <code>345</code> 转换成等效的字符串 <code>&quot;345&quot;</code>，然后 <code>parseInt()</code> 对该字符串进行解析，结果与传入原始字符串 <code>&quot;345&quot;</code> 相同。</p><p>不过，由于传入 <code>parseInt()</code> 的数字已经被视为有效的整数，这种情况下使用 <code>parseInt()</code> 多余且没有必要。 直接使用数字进行计算或操作通常更为高效和直观。 只有在需要特定进制转换（如将数字转换为特定进制的字符串表示）或与其他字符串数据混合处理时，使用 <code>parseInt()</code> 才有意义。</p><p>总结来说，<code>parseInt()</code> 函数可以接收数字作为其第一个参数，但实际上在数字已经是有效整数的情况下，直接使用该数字更为合适。 <code>parseInt()</code> 更常用于处理包含数字字符的字符串。</p><h4 id="parseint-返回的只能是整数-可以是负数" tabindex="-1"><code>parseInt()</code> 返回的只能是整数，可以是负数 <a class="header-anchor" href="#parseint-返回的只能是整数-可以是负数" aria-label="Permalink to &quot;`parseInt()` 返回的只能是整数，可以是负数&quot;">​</a></h4><p><code>parseInt()</code> 函数返回的确实是整数，但它可以是正整数，也可以是负整数。<code>parseInt()</code> 在解析字符串时，会识别出一个有效的整数部分，包括正负号。如果字符串以 <code>-</code> 符号开头，且后续字符能组成一个有效的整数，<code>parseInt()</code> 将返回一个负整数。</p><p>例如：</p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> positiveString</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &quot;123&quot;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> positiveNumber</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> parseInt</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">positiveString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">10</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">positiveNumber</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: 123</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> negativeString</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &quot;-456&quot;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> negativeNumber</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> parseInt</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">negativeString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">10</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">negativeNumber</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: -456</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div><p>在这两个例子中，<code>parseInt()</code> 分别成功解析了正整数字符串 <code>&quot;123&quot;</code> 和负整数字符串 <code>&quot;-456&quot;</code>，返回了对应的整数值。</p><p>需要注意的是，<code>parseInt()</code> 只解析整数部分，不会解析小数点或小数部分。 如果字符串包含小数点或小数部分，<code>parseInt()</code> 将忽略这些小数相关的内容，仅返回整数部分。例如：</p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> fractionalString</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &quot;3.14&quot;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> integerPart</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> parseInt</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">fractionalString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">10</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">integerPart</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: 3</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p>在这个例子中，尽管字符串 <code>&quot;3.14&quot;</code> 包含小数点和小数部分，<code>parseInt()</code> 仅解析并返回整数部分 <code>3</code>。</p><p>总结来说，<code>parseInt()</code> 函数返回的确实是整数，且可以是正整数或负整数。 它会忽略字符串中的非整数部分（如小数点和小数部分、非数字字符等），只解析并返回整数部分。</p><h4 id="parseint-无法将十进制转为2进制" tabindex="-1"><code>parseInt()</code>无法将十进制转为2进制 <a class="header-anchor" href="#parseint-无法将十进制转为2进制" aria-label="Permalink to &quot;`parseInt()`无法将十进制转为2进制&quot;">​</a></h4><p>对于非二进制字符出现在输入字符串中，<code>parseInt()</code>函数会忽略这些字符并尝试解析剩余部分。 如果字符串完全不包含有效的二进制字符，<code>parseInt()</code>将返回<code>NaN</code>（Not-a-Number）。</p><p>实际上，<code>parseInt(&#39;57&#39;, 2)</code> 这个调用会尝试将字符串 <code>&#39;57&#39;</code>解析为一个二进制数，而不是将十进制数转换为二进制字符串。 由于 <code>&#39;57&#39;</code> 不是一个有效的二进制数（二进制数只能包含字符 <code>&#39;0&#39;</code>和 <code>&#39;1&#39;</code>），<code>parseInt(&#39;57&#39;, 2)</code> 会返回 <code>NaN</code> （Not-a-Number），表示解析失败。</p><p>正确的做法是使用 <code>toString()</code> 方法将十进制数转换为二进制字符串，如下所示：</p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> decimalNumber</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 57</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> binaryString</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;"> decimalNumber</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">binaryString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: &quot;111001&quot;</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p>在这个例子中，<code>decimalNumber.toString(2)</code> 将十进制数 <code>57</code> 转换为二进制字符串 <code>&quot;111001&quot;</code>。</p><p>对于将十进制字符串（如 <code>&#39;57&#39;</code>）转换为二进制字符串，应先使用 <code>parseInt()</code> 将其解析为十进制数值，然后再调用 <code>toString()</code> 进行进制转换：</p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> decimalString</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &quot;57&quot;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> decimalNumber</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> parseInt</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">decimalString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">10</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 解析为十进制数</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> binaryString</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;"> decimalNumber</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 转换为二进制字符串</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">binaryString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: &quot;111001&quot;</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div><p>总结来说，<code>parseInt(&#39;57&#39;, 2)</code> 是试图将字符串 <code>&#39;57&#39;</code> 解析为二进制数，但由于 <code>&#39;57&#39;</code> 不是有效的二进制表示，该调用将返回 <code>NaN</code>。 要将十进制数（或十进制字符串）转换为二进制字符串，应使用 <code>toString()</code> 方法，并传入基数 <code>2</code> 作为参数。 对于将十进制字符串转换为二进制字符串，还需要先使用 <code>parseInt()</code> 将其解析为十进制数。</p><h4 id="更详细的parseint-使用见mdn" tabindex="-1">更详细的parseInt()使用见MDN <a class="header-anchor" href="#更详细的parseint-使用见mdn" aria-label="Permalink to &quot;更详细的parseInt()使用见MDN&quot;">​</a></h4><p><a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/parseInt" target="_blank" rel="noreferrer">https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/parseInt</a></p><h3 id="手动将十进制转换为二进制数的标准算法" tabindex="-1">手动将十进制转换为二进制数的标准算法 <a class="header-anchor" href="#手动将十进制转换为二进制数的标准算法" aria-label="Permalink to &quot;手动将十进制转换为二进制数的标准算法&quot;">​</a></h3><h4 id="整数转二进制-2-取整-直到商小于2为止-从下向上开始写余数" tabindex="-1">整数转二进制： /2 取整 直到商小于2为止;从下向上开始写余数 <a class="header-anchor" href="#整数转二进制-2-取整-直到商小于2为止-从下向上开始写余数" aria-label="Permalink to &quot;整数转二进制： /2 取整 直到商小于2为止;从下向上开始写余数&quot;">​</a></h4><p>具体步骤如下：</p><ol><li><p><strong>取整除以2</strong>：将给定的十进制整数除以2，并取其整数部分作为新的商。</p></li><li><p><strong>记录余数</strong>：记下此次除法的余数，它将是二进制数的一位。</p></li><li><p><strong>继续操作</strong>：如果新的商仍大于或等于2，则重复步骤1和2，即再次对新商取整除以2并记录余数。</p></li><li><p><strong>停止条件</strong>：当商小于2时，转换过程结束。</p></li><li><p><strong>构建二进制数</strong>：将所有记录下来的余数按照从下向上的顺序（即最后一次除法的余数作为最低位，第一次除法的余数作为最高位）拼接起来，得到的就是对应的二进制数。</p></li></ol><p>举个例子，将十进制整数 <code>17</code> 转换为二进制：</p><div class="language- vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span>商    余数</span></span>
<span class="line"><span>-----------------</span></span>
<span class="line"><span>17 ÷ 2 = 8...1</span></span>
<span class="line"><span>8  ÷ 2 = 4...0</span></span>
<span class="line"><span>4  ÷ 2 = 2...0</span></span>
<span class="line"><span>2  ÷ 2 = 1...0</span></span>
<span class="line"><span>1  ÷ 2 = 0...1</span></span>
<span class="line"><span></span></span>
<span class="line"><span>二进制数： 1 0 0 1</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br></div></div><p>所以，十进制整数 <code>17</code> 转换为二进制后为 <code>1001</code>。</p><h4 id="小数转二进制-2-取整" tabindex="-1">小数转二进制： *2 取整 <a class="header-anchor" href="#小数转二进制-2-取整" aria-label="Permalink to &quot;小数转二进制： *2 取整&quot;">​</a></h4><p>对于十进制小数转二进制，常规的手动算法并不适用，因为该方法基于整数除以2并取余数的过程。 对于小数部分，我们需要采用不同的方法进行转换。以下是一种常用的小数转二进制算法：</p><ol><li><p><strong>整数部分转换</strong>：首先，将小数点左侧的整数部分按照上述整数转二进制的方法进行转换。</p></li><li><p><strong>小数部分转换</strong>： a. 将小数点右侧的小数部分乘以2，得到一个新的小数。 b. 记录下新小数的整数部分（即乘以2后的小数点左侧部分），它将是二进制数的一位。 c. 如果新小数仍有小数部分（即小数点右侧部分不为0），则重复步骤2a和2b。 d. 当新小数的小数部分为0时，转换过程结束。</p></li><li><p><strong>合并整数和小数部分</strong>：将整数部分和小数部分按顺序拼接起来，得到完整的二进制表示。</p></li></ol><p>举个例子，将十进制数 <code>17.¾</code>（即 <code>17.75</code>）转换为二进制：</p><p><strong>整数部分 <code>17</code> 转换为二进制</strong>：</p><div class="language- vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span>商    余数</span></span>
<span class="line"><span>-----------------</span></span>
<span class="line"><span>17 ÷ 2 = 8...1</span></span>
<span class="line"><span>8  ÷ 2 = 4...0</span></span>
<span class="line"><span>4  ÷ 2 = 2...0</span></span>
<span class="line"><span>2  ÷ 2 = 1...0</span></span>
<span class="line"><span>1  ÷ 2 = 0...1</span></span>
<span class="line"><span></span></span>
<span class="line"><span>整数部分二进制： 1 0 0 1</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br></div></div><p><strong>小数部分 <code>0.75</code> 转换为二进制</strong>：</p><div class="language- vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span>乘以2       整数部分（二进制位）</span></span>
<span class="line"><span>--------------------------------</span></span>
<span class="line"><span>0.75 × 2 = 1.50        1</span></span>
<span class="line"><span>0.50 × 2 = 1.00        0</span></span>
<span class="line"><span>0.00 × 2 = 0.00        （结束）</span></span>
<span class="line"><span></span></span>
<span class="line"><span>小数部分二进制： 1 0</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div><p><strong>合并整数和小数部分</strong>：</p><div class="language- vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span>整数部分： 1 0 0 1</span></span>
<span class="line"><span>小数部分： 1 0</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><p>最终，十进制数 <code>17.¾</code>（即 <code>17.75</code>）转换为二进制为 <code>1001.10</code>。</p><p>请注意，小数转二进制过程中，通常需要根据实际应用场景确定保留的小数位数。 在上面的例子中，我们保留了两位小数精度。 如果需要更高的精度，可以继续重复步骤2直到达到所需精度或满足其他终止条件。 在实际编程中，通常使用特定的函数或库来实现这种转换，以确保精度和效率。</p><h3 id="手动将二进制数字转为十进制" tabindex="-1">手动将二进制数字转为十进制 <a class="header-anchor" href="#手动将二进制数字转为十进制" aria-label="Permalink to &quot;手动将二进制数字转为十进制&quot;">​</a></h3><p>手动将二进制数字转换为十进制，可以采用以下步骤：</p><ol><li><p><strong>从右向左</strong>：按照从二进制数的最右边（最低位）开始，向左（向高位）逐位进行。</p></li><li><p><strong>计算权值</strong>：对于二进制数的每一位，其权值等于2的位数次幂。最低位（最右边一位）的权值是2^0 = 1，次低位是2^1 = 2，以此类推。</p></li><li><p><strong>乘以位值</strong>：将二进制数的每一位与其对应的权值相乘。</p></li><li><p><strong>累加结果</strong>：将所有位值与权值的乘积相加，得到的总和即为该二进制数对应的十进制值。</p></li></ol><p>举个例子，将二进制数 <code>10101</code> 转换为十进制：</p><div class="language- vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span>二进制位：   1   0   1   0   1</span></span>
<span class="line"><span>对应权值： 2^4 2^3 2^2 2^1 2^0</span></span>
<span class="line"><span>乘积：      16   0   4   0   1</span></span>
<span class="line"><span></span></span>
<span class="line"><span>累加结果：  16 + 0 + 4 + 0 + 1 = 21</span></span>
<span class="line"><span></span></span>
<span class="line"><span>所以，二进制数 10101 转换为十进制为 21。</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div><p>按照上述步骤，可以手动将任何给定的二进制数转换为十进制。</p><h4 id="二进制小数转换为十进制" tabindex="-1">二进制小数转换为十进制 <a class="header-anchor" href="#二进制小数转换为十进制" aria-label="Permalink to &quot;二进制小数转换为十进制&quot;">​</a></h4><p>下面以二进制小数 <code>0.101</code> 转换为十进制为例：</p><ol><li><p><strong>从左向右</strong>：对于二进制小数，从最左边的数字（即小数点后第一位）开始，向右逐位进行。</p></li><li><p><strong>计算权值</strong>：小数点后第一位的权值是2^-1 = 0.5，第二位是2^-2 = 0.25，第三位是2^-3 = 0.125，以此类推。</p></li><li><p><strong>乘以位值</strong>：将二进制小数的每一位与其对应的权值相乘。</p></li><li><p><strong>累加结果</strong>：将所有位值与权值的乘积相加，得到的总和即为该二进制小数对应的十进制值。</p></li></ol><p>对于二进制小数 <code>0.101</code>：</p><div class="language- vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span>二进制位：    .   1   0   1</span></span>
<span class="line"><span>对应权值： 2^-1 2^-2 2^-3 2^-4</span></span>
<span class="line"><span>乘积：       0.5  0.25 0.125 0.0625</span></span>
<span class="line"><span></span></span>
<span class="line"><span>累加结果：   0.5 + 0.00 + 0.125 + 0.0625 = 0.75</span></span>
<span class="line"><span></span></span>
<span class="line"><span>所以，二进制小数 0.101 转换为十进制为 0.75。</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div><p>通过上述步骤，我们可以将二进制小数 <code>0.101</code> 手动转换为十进制小数 <code>0.75</code>。 同样，也可以按照这种方法将其他二进制小数转换为十进制</p><h2 id="js中的数字精度问题" tabindex="-1">js中的数字精度问题 <a class="header-anchor" href="#js中的数字精度问题" aria-label="Permalink to &quot;js中的数字精度问题&quot;">​</a></h2><h3 id="number-epsilon是什么" tabindex="-1">Number.EPSILON是什么 <a class="header-anchor" href="#number-epsilon是什么" aria-label="Permalink to &quot;Number.EPSILON是什么&quot;">​</a></h3><p><code>Number.EPSILON</code> 是 JavaScript 中的一个常量，表示 IEEE 754 浮点数标准下，能够表示的最小正数， 即 <code>Number.EPSILON</code> 等于 <code>2^-52</code>（大约等于 <code>2.2204460492503130808472633361816 × 10^-16</code>）。 它定义在 <code>Number</code> 构造函数的原型对象上，可以通过 <code>Number.EPSILON</code> 来访问。</p><p><code>Number.EPSILON</code> 主要用于判断两个浮点数之间的差异是否足够小，可以认为它们是相等的。 在浮点数计算中，由于浮点数的内在表示机制（二进制浮点数）以及舍入误差的存在，直接比较两个浮点数是否严格相等（使用 <code>===</code> 运算符）可能不够准确， 特别是在进行一系列计算后或者处理非常小的数值时。</p><p>使用 <code>Number.EPSILON</code> 可以帮助我们制定一个合理的误差阈值，进行近似相等判断。 例如，我们可以创建一个函数来检查两个浮点数 <code>x</code> 和 <code>y</code> 是否在允许的误差范围内相等：</p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">function</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> areNumbersEqual</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">x</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">y</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) {</span></span>
<span class="line"><span style="--shiki-light:#AF00DB;--shiki-dark:#C678DD;">	return</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;"> Math</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">abs</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">x</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> -</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> y</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">&lt;=</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;"> Number</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.EPSILON;</span></span>
<span class="line"><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">}</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p>这个函数通过计算 <code>x</code> 和 <code>y</code> 之间的绝对差值，并与 <code>Number.EPSILON</code> 进行比较。如果差值小于或等于 <code>Number.EPSILON</code> ，则认为这两个数在浮点数精度允许的范围内是相等的。</p><p>总结来说，<code>Number.EPSILON</code> 是一个用于浮点数近似相等判断的阈值，代表了在当前浮点数表示体系下能够分辨的最小正数差异。 它有助于我们在处理浮点数时，考虑到浮点数计算的内在精度限制，做出更为合理的相等性判断。</p><h3 id="js中的最大安全数" tabindex="-1">js中的最大安全数 <a class="header-anchor" href="#js中的最大安全数" aria-label="Permalink to &quot;js中的最大安全数&quot;">​</a></h3><div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 超过最大安全数范围后 数值不准</span></span>
<span class="line"><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> **</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 53</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> ===</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 2</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> **</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 53</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> +</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 1</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// ================== BigInt =======================</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#0070C1;--shiki-dark:#E5C07B;"> theBiggestInt</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 9007199254740991</span><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">n</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#0070C1;--shiki-dark:#E5C07B;"> alsoHuge</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> BigInt</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">9007199254740991</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">theBiggestInt</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> ===</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> alsoHuge</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#0070C1;--shiki-dark:#E5C07B;"> previousMaxSafe</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> BigInt</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">Number</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.MAX_SAFE_INTEGER);</span></span>
<span class="line"><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// ↪ 9007199254740991n</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#0070C1;--shiki-dark:#E5C07B;"> maxPlusOne</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> previousMaxSafe</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> +</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 1</span><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">n</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// ↪ 9007199254740992n</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#0070C1;--shiki-dark:#E5C07B;"> theFuture</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> previousMaxSafe</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> +</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 2</span><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">n</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// ↪ 9007199254740993n, this works now!</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">maxPlusOne</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> ===</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> theFuture</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">Number</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.MAX_SAFE_INTEGER </span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">===</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 2</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> **</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 53</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> -</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 1</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">Number</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.MAX_SAFE_INTEGER </span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">+</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 1</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> ===</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;"> Number</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.MAX_SAFE_INTEGER </span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">+</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br></div></div><p>在JavaScript中，最大安全数是指能够精确表示且在其范围内进行数学运算不会出现意外行为的<strong>整数</strong>。 这个最大值被称为 <code>Number.MAX_SAFE_INTEGER</code>，其值为 <code>2^53 - 1</code>，即 <code>9007199254740991</code>。</p><p>选择 <code>2^53 - 1</code> 作为最大安全数的原因在于JavaScript中数值的内部表示。 JavaScript采用IEEE 754标准的<strong>双精度浮点数</strong>（64位）来存储所有的数字，包括整数、小数和特殊值（如 <code>NaN</code> 和 <code>Infinity</code>）。</p><p><strong>64位双精度浮点数</strong>的结构如下：</p><ul><li><strong>符号位（1位）</strong>：表示数值的正负，0表示正数，1表示负数。</li><li><strong>指数位（11位）</strong>：存储以偏移量为1023的二进制表示的指数值。</li><li><strong>尾数（小数）位（52位）</strong>：存储实际的数值部分（包括整数部分和小数部分）。</li></ul><p>对于整数，双精度浮点数可以精确表示从 <code>-2^53</code> 到 <code>2^53 - 1</code> 范围内的所有整数值。 超出这个范围的整数可能会因为精度限制而无法精确表示，或者在进行某些数学运算时产生不可预知的结果，因此被称为“不安全”的整数。</p><p><code>Number.MAX_SAFE_INTEGER</code> 之所以是 <code>2^53 - 1</code>，是因为：</p><ul><li>最多可以有53位（包括小数点后的隐藏位）来表示整数部分。</li><li>二进制中表示最大整数的方式是所有位均为1（类似于十进制中的 <code>9999999999</code> ），即 <code>111111111111111111111111111111111111111111111111111</code>。</li><li>将这个二进制数转换为十进制，得到 <code>2^53 - 1</code>，即 <code>9007199254740991</code>。</li></ul><p>因此，在JavaScript中，如果需要处理的整数不会超过 <code>Number.MAX_SAFE_INTEGER</code>，那么可以确保它们的表示和运算都是精确的。 对于超过这个范围的整数，推荐使用专门的大数库（如 <code>BigInt</code> 类型或第三方库如 <code>big.js</code>、<code>decimal.js</code> 等）来保证数值的准确性和安全性。</p><h4 id="还是没理解为啥2-53-1-而不是2-53" tabindex="-1">还是没理解为啥2^53-1,而不是2^53？ <a class="header-anchor" href="#还是没理解为啥2-53-1-而不是2-53" aria-label="Permalink to &quot;还是没理解为啥2^53-1,而不是2^53？&quot;">​</a></h4><p>JavaScript中最大安全整数之所以是 <code>2^53 - 1</code>，而不是 <code>2^53</code>，原因在于双精度浮点数（即JavaScript中数值的内部表示）的精度限制和二进制浮点数的编码规则。</p><p>双精度浮点数使用52位来表示小数（或尾数）部分，加上一个隐藏的前导1（不存储在内存中，但实际计算时认为存在），总共可以表示53位有效数字。 这意味着，对于整数，最多可以精确表示一个拥有53位的二进制数。这个最大的可精确表示的二进制整数是 <code>1</code> 后面跟着52个 <code>1</code>，即：</p><div class="language- vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span>111111111111111111111111111111111111111111111111111</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br></div></div><p>将这个二进制数转换成十进制，得到 <code>2^53 - 1</code>，即 <code>9007199254740991</code>。</p><p>如果试图表示 <code>2^53</code>（即 <code>1000000000000000000000000000000000000000000000000000</code> ），由于双精度浮点数的尾数部分只有52位可用，最后一个 <code>1</code> 会超出表示范围，导致无法精确存储。 实际上，<code>2^53</code> 在JavaScript中会被表示为最接近的下一个可表示的双精度浮点数，这个数略大于 <code>2^53</code>。</p><p>因此，<code>2^53</code> 本身作为一个整数，不能被双精度浮点数精确表示。而 <code>2^53 - 1</code> 刚好落在双精度浮点数可精确表示的整数范围内，是最大可精确表示的整数。 这就是为什么JavaScript中最大安全整数是 <code>2^53 - 1</code>，而非 <code>2^53</code>。选择 <code>2^53 - 1</code> 作为界限，可以确保在这个范围内的整数都能被精确表示和运算，不会因浮点数精度问题导致意外结果。 超过这个范围的整数则可能遭遇精度损失，从而被认为是“不安全”的。</p><h3 id="javascript中的最小安全整数" tabindex="-1">JavaScript中的最小安全整数 <a class="header-anchor" href="#javascript中的最小安全整数" aria-label="Permalink to &quot;JavaScript中的最小安全整数&quot;">​</a></h3><p>JavaScript中的最小安全整数是 <code>Number.MIN_SAFE_INTEGER</code>，其值为 <code>-2^53 + 1</code>，即 <code>-9007199254740991</code>。</p><p>这个最小安全整数的确定原理与最大安全整数相似，都是基于JavaScript中数值的内部表示——双精度浮点数的精度限制。双精度浮点数可以精确表示从 <code>-2^53</code> 到 <code>2^53 - 1</code> 范围内的所有整数值。 <code>-2^53</code> 是双精度浮点数能够表示的最小负整数，但由于 <code>-2^53</code> 本身也是整数，所以 <code>-2^53</code> 之后的下一个可精确表示的整数就是 <code>-2^53 + 1</code>。</p><p>最小安全整数之所以不是 <code>-2^53</code>，原因在于 <code>-2^53</code> 作为整数，其二进制表示中虽然有53个有效位（包括隐藏的前导1），但由于它是负数，其二进制表示实际是这样的：</p><div class="language- vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span>1000000000000000000000000000000000000000000000000000</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br></div></div><p>其中最高位的 <code>1</code> 是符号位，表示这是一个负数。接下来的52位 <code>0</code> 表示其整数部分为 <code>0</code>，小数部分为 <code>0</code>。 因此，<code>-2^53</code> 实际上表示的是 <code>0</code>，是一个特殊的边界情况。</p><p>因此，最小安全整数是 <code>-2^53 + 1</code>，即 <code>-9007199254740991</code>，它确保了在这一范围内的负整数都能够被双精度浮点数精确表示和运算，不会因浮点数精度问题导致意外结果。 小于这个范围的负整数则可能遭遇精度损失，从而被认为是“不安全”的。</p><h3 id="js中的最大数" tabindex="-1">js中的最大数 <a class="header-anchor" href="#js中的最大数" aria-label="Permalink to &quot;js中的最大数&quot;">​</a></h3><div class="language-text vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span>// 64位双精度浮点数类型 = 符号位（1位）+ 指数位（11位）+有效位（52位）</span></span>
<span class="line"><span>2 ** 1024;// Infinity</span></span>
<span class="line"><span>2 ** 1024 - 1;//物理极限 js中能表示的最大数是 2**1024 -1</span></span>
<span class="line"><span>2 ** 1023 * 1.999999999999999888;</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div><p>JavaScript中的最大数值是 <code>Number.MAX_VALUE</code>，其值为 <code>1.7976931348623157e+308</code>。 这个值接近但略小于 <code>2^1024 - 2^971</code>，是双精度浮点数所能表示的最大正数。 双精度浮点数是JavaScript中数值的内部表示方式，其最大值受限于其二进制表示所能容纳的最大指数和尾数部分。</p><p>具体来说，双精度浮点数的结构如下：</p><ul><li><strong>符号位（1位）</strong>：表示数值的正负，0表示正数，1表示负数。</li><li><strong>指数位（11位）</strong>：存储以偏移量为1023的二进制表示的指数值。因此，指数的有效范围为 <code>-1022</code> 到 <code>1023</code>（含两端）。</li><li><strong>尾数（小数）位（52位）</strong>：存储实际的数值部分（包括整数部分和小数部分）。加上一个隐含的前导1，总共可以表示53位有效数字。</li></ul><p>当指数部分达到最大值 <code>1023</code>，且尾数部分全部为 <code>1</code> 时，就形成了双精度浮点数的最大值。 但由于实际存储的尾数部分只有52位，最后一个 <code>1</code> 是隐含的，所以最大值稍小于 <code>2^1024 - 2^971</code>（这个值是所有位均为 <code>1</code> 的双精度浮点数表示的最大值）。 <code>Number.MAX_VALUE</code> 确切的二进制表示是 <code>111111111111111111111111111111111111111111111111111</code>（尾数部分）和 <code>11111111111</code> （指数部分，表示 <code>1023</code>），加上符号位 <code>0</code>（表示正数）。</p><p>需要注意的是，虽然 <code>Number.MAX_VALUE</code> 是JavaScript中可表示的最大数值，但并非所有在这个范围内的数都能被精确表示。 特别是对于整数，最大的精确整数是 <code>Number.MAX_SAFE_INTEGER</code>，即 <code>2^53 - 1</code>。 超出这个范围的整数可能会因为精度限制而无法精确表示，或者在进行某些数学运算时产生不可预知的结果。 对于非常大的数值，建议使用JavaScript中的 <code>BigInt</code> 类型或第三方大数库来确保数值的准确性和安全性。</p><h3 id="js中的最小数值" tabindex="-1">Js中的最小数值 <a class="header-anchor" href="#js中的最小数值" aria-label="Permalink to &quot;Js中的最小数值&quot;">​</a></h3><p>JavaScript中的最小数值是 <code>Number.MIN_VALUE</code>，其值为 <code>5e-324</code>。这是双精度浮点数所能表示的最小正值，也是在JavaScript中能够表示的非零正数的最小值。</p><p><code>Number.MIN_VALUE</code> 之所以如此之小，是因为双精度浮点数的结构限制和编码规则：</p><ul><li><strong>符号位（1位）</strong>：表示数值的正负，0表示正数，1表示负数。</li><li><strong>指数位（11位）</strong>：存储以偏移量为1023的二进制表示的指数值。当指数部分为最小值 <code>-1022</code>，表示一个非常接近于零但略大于零的数。</li><li><strong>尾数（小数）位（52位）</strong>：存储实际的数值部分（包括整数部分和小数部分）。当尾数部分全部为 <code>0</code> 且指数为最小值时，表示的数值是最接近于零的非零正数。</li></ul><p>具体来说，<code>Number.MIN_VALUE</code> 的二进制表示是 <code>000000000000000000000000000000000000000000000000001</code> （尾数部分，除了隐含的前导1外，其余位全为0）和 <code>00000000001</code>（指数部分，表示 <code>-1022</code>），加上符号位 <code>0</code>（表示正数）。</p><p>需要注意的是，虽然 <code>Number.MIN_VALUE</code> 是JavaScript中可表示的最小非零正数，但实际的最小数值是 <code>Number.NEGATIVE_INFINITY</code> ，表示负无穷大。 当进行某些数学运算（如除以零）或遇到无法表示的负数时，结果可能会变为 <code>Number.NEGATIVE_INFINITY</code>。同时，<code>Number.MIN_VALUE</code> 与零之间的差距极其微小，通常在实际应用中可以近似认为是零。 在处理极小数值时，需特别留意浮点数精度问题可能导致的计算误差。</p><h3 id="若需要返回小数-使用parsefloat" tabindex="-1">若需要返回小数，使用parseFloat()? <a class="header-anchor" href="#若需要返回小数-使用parsefloat" aria-label="Permalink to &quot;若需要返回小数，使用parseFloat()?&quot;">​</a></h3><p>若需要从字符串中解析并返回包含小数部分的数值（即浮点数），应使用 <code>parseFloat()</code> 函数而非 <code>parseInt()</code>。 <code>parseFloat()</code> 专门设计用于解析包含整数和小数部分的数值字符串，并返回对应的浮点数。</p><p>例如：</p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> fractionalString</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &quot;3.14&quot;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> floatNumber</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> parseFloat</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">fractionalString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">floatNumber</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: 3.14</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p>在这个例子中，<code>parseFloat(fractionalString)</code> 成功解析了包含小数点和小数部分的字符串 <code>&quot;3.14&quot;</code>，返回了对应的浮点数 <code>3.14</code>。</p><p><code>parseFloat()</code> 与 <code>parseInt()</code> 类似，也支持第二个可选参数来指定基数（进制）。 但对于浮点数，通常只关心十进制表示，因此通常不需要提供这个参数。<code>parseFloat()</code> 在解析过程中遇到非数字字符时会停止解析，返回已解析到的浮点数。 非数字字符及其后面的字符将被忽略。</p><p>总结来说，若需要从字符串中返回包含小数部分的数值（浮点数），应使用 <code>parseFloat()</code> 函数。它能够正确解析并返回字符串中表示的整数和小数部分。</p><h5 id="parsefloat-在解析字符串并返回浮点数时理论上存在精度丢失的可能性" tabindex="-1"><code>parseFloat()</code>在解析字符串并返回浮点数时理论上存在精度丢失的可能性 <a class="header-anchor" href="#parsefloat-在解析字符串并返回浮点数时理论上存在精度丢失的可能性" aria-label="Permalink to &quot;`parseFloat()`在解析字符串并返回浮点数时理论上存在精度丢失的可能性&quot;">​</a></h5><p><code>parseFloat()</code> 函数在解析字符串并返回浮点数时，理论上存在精度丢失的可能性，但这主要取决于输入字符串表示的数值大小以及JavaScript中浮点数的内部表示方式。</p><p>JavaScript中的浮点数遵循IEEE 754标准，使用双精度浮点数（double-precision floating-point number）格式来存储。 这种格式提供了约15到16位的有效数字精度。对于大多数日常应用中的浮点数，这种精度已经足够精确。 然而，对于极小或极大的数值，或者涉及大量计算导致累积误差的情形，可能会观察到浮点数运算的精度损失。</p><p>例如，以下代码展示了两个看似相等但实际上在JavaScript中不相等的浮点数：</p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> a</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 0.1</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> +</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 0.2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> b</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 0.3</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">a</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> ===</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> b</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: false</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div><p>在这里，<code>a</code> 和 <code>b</code> 在数学意义上应该是相等的，但由于浮点数的近似表示，它们在JavaScript中并不严格相等。</p><p>回到 <code>parseFloat()</code> 函数，当解析的字符串表示一个非常大或非常小的数值，或者是一个需要极高精度才能准确表示的特殊数值（如某些有理数的分数形式），有可能在转换为浮点数后出现精度丢失。 然而，对于大多数常见的浮点数，<code>parseFloat()</code> 能够准确地解析并返回相应的浮点数，不会造成明显的精度损失。</p><p>在实际开发中，如果需要处理高精度的浮点数运算或需要确保数值精确相等，可以考虑使用专门处理高精度数值的库（如<code>decimal.js</code> ），或者采取合适的比较策略（如使用小数点后一定数量的位数进行比较，或者设定一个允许的误差范围）来应对浮点数精度问题。</p><p>总结来说，<code>parseFloat()</code> 在解析字符串并返回浮点数时理论上存在精度丢失的可能性，但这种现象通常发生在处理极小或极大数值，或涉及大量计算导致累积误差的情况下。 对于大多数日常应用中的浮点数，<code>parseFloat()</code> 能够准确地解析并返回相应的浮点数。 如果有高精度需求，建议使用专门的高精度数值库或采取适当的比较策略。</p><h5 id="parsefloat-精度丢失举例说明" tabindex="-1"><code>parseFloat()</code>精度丢失举例说明 <a class="header-anchor" href="#parsefloat-精度丢失举例说明" aria-label="Permalink to &quot;`parseFloat()`精度丢失举例说明&quot;">​</a></h5><p>下面是一个具体的例子，演示了 <code>parseFloat()</code> 在解析字符串时可能出现的精度丢失情况：</p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> inputString</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &quot;0.1234567890123456789&quot;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> parsedFloat</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> parseFloat</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">inputString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">parsedFloat</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: 0.12345678901234568</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div><p>在这个例子中，输入字符串 <code>inputString</code> 表示一个具有20位小数精度的数值。然而，当使用 <code>parseFloat()</code> 进行解析并转换为JavaScript中的浮点数时，输出的 <code>parsedFloat</code> 只保留了约16位小数精度。 原本字符串中的最后几位小数（<code>&quot;56789&quot;</code>）由于超过了浮点数的精度限制，被近似为 <code>8</code>。这就是精度丢失的一个具体体现。</p><p>虽然这个例子中的数值可能在实际应用中不太常见，但它说明了当字符串表示的浮点数超出了JavaScript浮点数所能精确表示的范围时，<code>parseFloat()</code> 在转换过程中可能会引入精度损失。</p><p>再次强调，对于大多数日常使用的浮点数，尤其是那些有效数字少于或等于15到16位的数值，<code>parseFloat()</code>能够准确地解析并返回相应的浮点数。 精度丢失问题通常只在处理具有极高精度要求的数值或特定边界情况时才会明显显现出来。 如果有高精度需求，应考虑使用专门的高精度数值库，如<code>decimal.js</code>，或者在比较浮点数时采用适当的误差容忍策略。</p><h3 id="为什么js中0-1-0-2-0-3" tabindex="-1">为什么js中0.1+0.2!== 0.3? <a class="header-anchor" href="#为什么js中0-1-0-2-0-3" aria-label="Permalink to &quot;为什么js中0.1+0.2!== 0.3?&quot;">​</a></h3><p>在JavaScript（以及许多其他编程语言）中，浮点数的表示和运算涉及到一种标准格式，即IEEE 754浮点数标准。 虽然这个标准极大地提高了数值计算的效率和通用性，但它也带来了一些精度问题，特别是在涉及像 <code>0.1</code>, <code>0.2</code>, <code>0.3</code> 这样的看似简单的十进制分数时。</p><p>以下是导致 <code>0.1 + 0.2 !== 0.3</code> 的原因：</p><ol><li><p><strong>有限精度表示</strong>：根据IEEE 754，浮点数在计算机内部是以二进制（基数为2）的形式存储的。 然而，有些十进制小数（如 <code>0.1</code> 和 <code>0.2</code>）无法精确地用有限长度的二进制小数来表示，它们只能被近似表示。 这是因为十进制分数如 <code>1/10</code> 或 <code>1/5</code> 并不是二进制分数，不能化简为有限位的二进制小数。</p></li><li><p><strong>舍入误差</strong>：当这些十进制数被转换为二进制浮点数时，会引入微小的舍入误差。 尽管在大多数情况下，这种误差对于实际应用来说是微不足道的，但在某些特定的数学比较或精确相等判断时，这些误差会导致预期的结果不成立。</p></li><li><p><strong>浮点数运算的累积误差</strong>：即使单独存储的 <code>0.1</code> 和 <code>0.2</code> 已经带有舍入误差，它们在进行加法运算时，这些误差可能会进一步累积，使得结果 <code>0.3</code> 与原本期望的十进制 <code>0.3</code> 不完全相同。</p></li></ol><p>因此，当您在JavaScript中执行 <code>0.1 + 0.2</code> 时，由于上述原因，得到的结果实际上是一个非常接近但不完全等于 <code>0.3</code> 的浮点数。 直接使用严格相等运算符 <code>===</code> 或不等运算符 <code>!==</code> 来比较这类结果，会显示出它们并不严格相等。</p><p>要验证这一点，您可以运行以下JavaScript代码：</p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">0.1</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> +</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 0.2</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> ===</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 0.3</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出：false</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">0.1</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> +</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 0.2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);         </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出：0.30000000000000004</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><p>可以看到，尽管输出结果显示的是 <code>0.3</code>，但实际上它后面还跟着一串极小的数字，这表明它并非精确的 <code>0.3</code>。</p><p>处理这类问题时，通常需要对浮点数进行适当的舍入或者使用一个较小的容差值来进行近似相等判断。例如：</p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#0070C1;--shiki-dark:#E5C07B;"> epsilon</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 1e-9</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">; </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 定义一个很小的误差范围</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">Math</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">abs</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">0.1</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> +</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 0.2</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> -</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 0.3</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">&lt;</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> epsilon</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出：true</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><p>这里我们使用了 <code>Math.abs()</code> 来计算绝对差值，并与一个足够小的容差值（比如 <code>1e-9</code>）进行比较，这样就可以判断两个浮点数是否“几乎相等”，而不会受到浮点数精度问题的影响。</p><p>通俗理解： js中的.1在转为二进制数时，会变成无限循环小数 0.0 0011 0011 0011 用二进制的科学计数法表示为 1.10011 * 2^(-4),其中 1.100011为有效数，2^(-4) 为指数。</p><p>计算空间是有限制的，无限小数会丢失精度，导致不准</p><p>比如1/3 + 1/3 + 1/3 = 3；但是 1/3 = 0.333 ，最后相加后不会等于1而是0.999</p><h3 id="js中的浮点数的陷阱-有哪些" tabindex="-1">js中的浮点数的陷阱，有哪些？ <a class="header-anchor" href="#js中的浮点数的陷阱-有哪些" aria-label="Permalink to &quot;js中的浮点数的陷阱，有哪些？&quot;">​</a></h3><h4 id="四舍五入陷阱" tabindex="-1">四舍五入陷阱 <a class="header-anchor" href="#四舍五入陷阱" aria-label="Permalink to &quot;四舍五入陷阱&quot;">​</a></h4><h6 id="银行家舍入规则-banker-s-rounding" tabindex="-1">银行家舍入规则（Banker&#39;s Rounding） <a class="header-anchor" href="#银行家舍入规则-banker-s-rounding" aria-label="Permalink to &quot;银行家舍入规则（Banker&#39;s Rounding）&quot;">​</a></h6><p>银行家舍入规则是一种常用的舍入策略，特别是在金融和会计领域，旨在减少因舍入误差造成的累计偏差。 其主要特点是在进行舍入时，优先考虑相邻两个值中距离原数值较远的那个值。具体规则如下：</p><ol><li><p><strong>确定舍入位数</strong>：确定要保留的小数位数（例如保留两位小数）。</p></li><li><p><strong>检查待舍入位</strong>：</p><ul><li>如果待舍入位（即保留位数之后的第一位小数）小于 <code>5</code>，则直接舍去待舍入位及其后的所有位，即向下舍入。</li><li>如果待舍入位等于 <code>5</code>，则： <ul><li>检查待舍入位的下一位（即更小的位）： <ul><li>如果下一位非零（即有更小的数字），向上舍入（增加保留位数的末位）。</li><li>如果下一位为零（即没有更小的数字），检查保留位数的末位： <ul><li>如果保留位数的末位为偶数（0、2、4、6、8），向下舍入。</li><li>如果保留位数的末位为奇数（1、3、5、7、9），向上舍入。</li></ul></li></ul></li></ul></li></ul></li></ol><p>银行家舍入规则的优势在于，当对一组数值进行多次舍入操作时，其结果更倾向于平衡（即向上和向下舍入的概率趋于相等），从而减少了因舍入误差造成的累计偏差。 这对于需要精确计算总和、平均值等场合尤为重要，如金融交易、税务计算等。</p><p>以下是一些使用银行家舍入规则的示例：</p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 银行家舍入函数（假设保留两位小数）</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">function</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> bankersRound</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">num</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) {</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">	const</span><span style="--shiki-light:#0070C1;--shiki-dark:#E5C07B;"> factor</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">; </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 保留两位小数，乘以100</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">	const</span><span style="--shiki-light:#0070C1;--shiki-dark:#E5C07B;"> rounded</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;"> Math</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">round</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">((</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">num</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> *</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> factor</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">+</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 0.5</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">/</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> factor</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">; </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 使用Math.round进行近似银行家舍入</span></span>
<span class="line"><span style="--shiki-light:#AF00DB;--shiki-dark:#C678DD;">	return</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> Number</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">rounded</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 确保结果为两位小数的数值</span></span>
<span class="line"><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 示例</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">bankersRound</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">123.456</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: 123.46（待舍入位为6，向上舍入）</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">bankersRound</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">123.445</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: 123.44（待舍入位为5，下一位为非零，向下舍入）</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">bankersRound</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">123.455</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: 123.46（待舍入位为5，下一位为零，保留位数末位为偶数，向上舍入）</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">bankersRound</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">123.445</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: 123.44（待舍入位为5，下一位为零，保留位数末位为奇数，向下舍入）</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br></div></div><p>需要注意的是，JavaScript的 <code>Math.round()</code> 函数默认实现并不严格遵循银行家舍入规则，尤其是在待舍入位为 <code>5</code> 且下一位为零的情况下。 上述示例中，我们利用 <code>Math.round()</code> 的特性进行了近似银行家舍入。</p><p>网上说的toFixed() 其实就是精度问题，不是什么银行家舍入规则，不要被带跑偏。</p><h5 id="math-round-数字" tabindex="-1">Math.round(数字) <a class="header-anchor" href="#math-round-数字" aria-label="Permalink to &quot;Math.round(数字)&quot;">​</a></h5><div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">Math</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">round</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">0.105</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// Math.round只能保留整数位</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br></div></div><p>注意，与很多其他语言中的round() 函数不同，Math.round() 并不总是舍入到远离 0 的方向 （尤其是在负数的小数部分恰好等于 0.5 的情况下） 如果参数的小数部分大于 0.5，则舍入到相邻的绝对值更大的整数。 如果参数的小数部分小于 0.5，则舍入到相邻的绝对值更小的整数。 如果参数的小数部分恰好等于 0.5，则舍入到相邻的在正无穷（+∞）方向上的整数</p><p>详细用法见 <a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math/round" target="_blank" rel="noreferrer">https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math/round</a></p><h6 id="即使先乘以100再除以100-也还是不准的" tabindex="-1">即使先乘以100再除以100 也还是不准的！！！ <a class="header-anchor" href="#即使先乘以100再除以100-也还是不准的" aria-label="Permalink to &quot;即使先乘以100再除以100 也还是不准的！！！&quot;">​</a></h6><div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">Math</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">round</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.595</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> *</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">/</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 321201.59</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">Math</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">round</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.585</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> *</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">/</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 321201.59</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">Math</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">round</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.575</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> *</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">/</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 321201.58</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">Math</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">round</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.565</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> *</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">/</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 321201.57</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">Math</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">round</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.555</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> *</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">/</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 321201.56</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">Math</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">round</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.545</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> *</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">/</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 321201.55</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">Math</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">round</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.535</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> *</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">/</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 321201.53</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">Math</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">round</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.525</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> *</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">/</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 321201.53</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">Math</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">round</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.515</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> *</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">/</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 321201.52</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">Math</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">round</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.505</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> *</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">/</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 321201.51</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">Math</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">round</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.5351</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> *</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">/</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 321201.54</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">Math</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">round</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.5951</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> *</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">/</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 321201.6</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br></div></div><p>上面的数据显示，321201.595 &amp; 321201.535 没有进1，其他的都进了......</p><p>这是因为...321201.595 * 100 !== 32120159.5，而是32120159.499999996，这个问题是计算精度的问题</p><h5 id="number-prototype-tofixed-digits" tabindex="-1">Number.prototype.toFixed(digits) <a class="header-anchor" href="#number-prototype-tofixed-digits" aria-label="Permalink to &quot;Number.prototype.toFixed(digits)&quot;">​</a></h5><div class="language-text vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span>0.105.toFixed(2);// toFixed 返回值是字符串！！！ </span></span>
<span class="line"><span></span></span>
<span class="line"><span>0.105.toFixed(2) === &#39;0.11&#39;;</span></span>
<span class="line"><span></span></span>
<span class="line"><span>(2.55).toFixed(1); // &#39;2.5&#39;</span></span>
<span class="line"><span>// 它向下舍入，因为它无法用浮点数精确表示，并且最接近的可表示浮点数较小</span></span>
<span class="line"><span></span></span>
<span class="line"><span>(2.449999999999999999).toFixed(1); // &#39;2.5&#39;</span></span>
<span class="line"><span>// 向上舍入，因为它与 2.45 的差值小于 Number.EPSILON。</span></span>
<span class="line"><span>// 这个字面量实际上编码和 2.45 相同的数值</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br></div></div><p><a href="https://www.sitepoint.com/number-tofixed-rounding-errors-broken-but-fixable/4" target="_blank" rel="noreferrer">Number().toFixed() Rounding Errors</a></p><h6 id="tofixed方法舎入不精确问题解决" tabindex="-1">toFixed方法舎入不精确问题解决 <a class="header-anchor" href="#tofixed方法舎入不精确问题解决" aria-label="Permalink to &quot;toFixed方法舎入不精确问题解决&quot;">​</a></h6><p>在使用toFixed对1.0245进行按四舍五入保留三位小数进行舎入时，保留得到的结果为1.024</p><div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">1.0245</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">3</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// &#39;1.024&#39;</span></span>
<span class="line"><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">1.02451</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">3</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// &#39;1.025&#39;</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><p>网上是这么说的(其实是错误的)： <code>toFixed()</code>方法的舎入和数学中“四舍五入”的舎入规则是不一样的， 遵循了银行家舍入规则。 它实际上采用的是&quot;四舍六入五取偶（四舍六入五留双）&quot;的舎入规则，也就是所谓的<strong>银行家舎入规则</strong> （银行家舎入规则：四舍六入五考虑，五后非零就进一，五后为零看奇偶，五前为偶应舍去，五前为奇要进一）</p><p>但是我跑了一遍发现，好像不对啊，5前为奇数的时候，只有321201.575； 321201.515进1了，相反5前面为偶数的时候除了321201.545 其他的都会进1。</p><p>可以证实的是，如果5后面还有数值，那就会直接进1，参考321201.5951</p><p>继续用上面的321201.595举个🌰：</p><div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.595</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// &#39;321201.59&#39; </span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.585</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// &#39;321201.59&#39;</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.575</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// &#39;321201.58&#39;</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.565</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// &#39;321201.57&#39;</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.555</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// &#39;321201.55&#39;</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.545</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// &#39;321201.54&#39;</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.535</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// &#39;321201.53&#39;</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.525</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// &#39;321201.53&#39;</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.515</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// &#39;321201.52&#39;</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.505</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// &#39;321201.51&#39;</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.5951</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// &#39;321201.60&#39;</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br></div></div><p>若需要普通的四舍五入，解决方法：（验证有误）</p><div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 修正toFixed精度问题</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">function</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">number</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">fractionDigits</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) {</span></span>
<span class="line"><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">	// number为数值，fractionDigits为保留的小数位数</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">	const</span><span style="--shiki-light:#0070C1;--shiki-dark:#E5C07B;"> times</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 10</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">**</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">fractionDigits</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">; </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// pow(x,y) 方法可返回 x 的 y 次幂的值。</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">	let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> roundNum</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> number</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> *</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> times</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> +</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 0.5</span></span>
<span class="line"><span style="--shiki-light:#AF00DB;--shiki-dark:#C678DD;">	return</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> roundNum</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> parseInt</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">roundNum</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">10</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">/</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> times</span></span>
<span class="line"><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.595</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 321201.59 // x</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.585</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 321201.59</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.575</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 321201.58</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.565</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 321201.57</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.555</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 321201.56</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.545</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 321201.55</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.535</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 321201.53 // x</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.525</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 321201.53 </span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.515</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 321201.52</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.505</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 321201.51</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">321201.5951</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)) </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 321201.6</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br></div></div><h6 id="处理-0-的情况" tabindex="-1">处理 <code>0</code> 的情况： <a class="header-anchor" href="#处理-0-的情况" aria-label="Permalink to &quot;处理 `0` 的情况：&quot;">​</a></h6><p>在使用 <code>toFixed()</code> 方法时，如果不确定数值是否为 <code>0</code>，可以先检查数值是否为非零，再决定是否调用 <code>toFixed()</code>。 如果数值为 <code>0</code>，可以直接返回字符串形式的 <code>&quot;0&quot;</code> 或者数值形式的 <code>0</code>。例如：</p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">function</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> formatPercentage</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">num</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">decimals</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) {</span></span>
<span class="line"><span style="--shiki-light:#AF00DB;--shiki-dark:#C678DD;">	if</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;"> (</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">num</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> ===</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 0</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) {</span></span>
<span class="line"><span style="--shiki-light:#AF00DB;--shiki-dark:#C678DD;">		return</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &quot;0&quot;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">	}</span></span>
<span class="line"><span style="--shiki-light:#AF00DB;--shiki-dark:#C678DD;">	return</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;"> num</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">decimals</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span>
<span class="line"><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 示例：</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">formatPercentage</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">0</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: &quot;0&quot;</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br></div></div><h6 id="确保返回数值类型" tabindex="-1">确保返回数值类型： <a class="header-anchor" href="#确保返回数值类型" aria-label="Permalink to &quot;确保返回数值类型：&quot;">​</a></h6><p>使用toFixed方法转化后，得到的是一个字符串，如果我们期望得到一个数值，那么需要再转化为Number类型； 为了避免 <code>toFixed()</code> 返回字符串，可以在调用 <code>toFixed()</code> 后使用 <code>Number()</code> 函数将结果转换回数值类型。例如：</p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">function</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> formatPercentage</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">num</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">decimals</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) {</span></span>
<span class="line"><span style="--shiki-light:#AF00DB;--shiki-dark:#C678DD;">	if</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;"> (</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">num</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> ===</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 0</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) {</span></span>
<span class="line"><span style="--shiki-light:#AF00DB;--shiki-dark:#C678DD;">		return</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 0</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">	}</span></span>
<span class="line"><span style="--shiki-light:#AF00DB;--shiki-dark:#C678DD;">	return</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> Number</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">num</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">decimals</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">));</span></span>
<span class="line"><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 示例：</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">typeof</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> formatPercentage</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">0.</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">png</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: &quot;number&quot;</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br></div></div><h6 id="避免无限循环小数" tabindex="-1">避免无限循环小数： <a class="header-anchor" href="#避免无限循环小数" aria-label="Permalink to &quot;避免无限循环小数：&quot;">​</a></h6><p>在需要将数值乘以100（或其他非整数倍数）并保留两位小数时，可以先将数值乘以100，再调用 <code>toFixed(2)</code>，最后使用 <code>Number()</code> 转换回数值类型。 这样可以避免因乘法操作引入无限循环小数。例如：</p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">function</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> formatPercentage</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">num</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) {</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">	const</span><span style="--shiki-light:#0070C1;--shiki-dark:#E5C07B;"> multipliedNum</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> num</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> *</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#AF00DB;--shiki-dark:#C678DD;">	if</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;"> (</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">multipliedNum</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> ===</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 0</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) {</span></span>
<span class="line"><span style="--shiki-light:#AF00DB;--shiki-dark:#C678DD;">		return</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 0</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">	}</span></span>
<span class="line"><span style="--shiki-light:#AF00DB;--shiki-dark:#C678DD;">	return</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> Number</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">multipliedNum</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">));</span></span>
<span class="line"><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 示例：</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">formatPercentage</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">0.01</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: 1</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br></div></div><h6 id="对负数使用-tofixed" tabindex="-1">对负数使用 toFixed() <a class="header-anchor" href="#对负数使用-tofixed" aria-label="Permalink to &quot;对负数使用 toFixed()&quot;">​</a></h6><p>由于成员访问的优先级高于一元减号，需要将负数表达式组合以获得一个字符串。</p><div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">-</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2.34</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">1</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// -2.3，数字</span></span>
<span class="line"><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">-</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2.34</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">).</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">1</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// &#39;-2.3&#39;,会将括号内的作为字符串进行转换</span></span>
<span class="line"><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2.34</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">1</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// &#39;2.3&#39; ,字符串</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p>这两个表达式都使用了 <code>toFixed()</code> 方法来格式化浮点数，但它们的区别在于表达式的写法和返回值的类型。让我们分别解释：</p><ol><li><p><code>-2.34.toFixed(1);</code></p><p>这个表达式没有使用括号将 <code>-2.34</code> 包裹起来。 在JavaScript中，负数浮点数字面量（如 <code>-2.34</code> ）被视为Number对象，可以直接调用其方法，如 <code>toFixed()</code>。 因此，<code>-2.34.toFixed(1)</code> 是一个合法的表达式，它会成功执行并返回一个表示 <code>-2.34</code> 保留一位小数的字符串 <code>&quot;-2.3&quot;</code>。</p></li></ol><p>实际上，负数浮点数字面量可以像其他Number对象一样直接调用方法，无需使用括号将其转换为表达式或赋值给变量。</p><ol start="2"><li><p><code>(-2.34).toFixed(1);</code></p><p>这个表达式使用了括号 <code>()</code> 来包围 <code>-2.34</code>，使得它被当作一个完整的数学表达式先求值。结果是一个负数浮点数 <code>-2.34</code>。 接着，点号 <code>.</code> 后面的 <code>toFixed(1)</code> 是对该浮点数调用的方法。 <code>toFixed(1)</code> 方法的作用是将一个浮点数四舍五入到指定的小数位数（这里是1位），并返回一个字符串形式的结果。</p><p>因此，<code>(-2.34).toFixed(1)</code> 的结果是字符串 <code>&#39; -2.3&#39;</code>，其中包含了负号和一位小数。 返回值是一个字符串，而不是数字，因为 <code>toFixed()</code> 方法总是返回字符串。</p></li></ol><p>总结来说：</p><ul><li><code>-2.34.toFixed(1)</code> 是一个合法的表达式，它会成功执行并返回一个表示 <code>-2.34</code> 保留一位小数的字符串 <code>&quot;-2.3&quot;</code>。</li><li><code>(-2.34).toFixed(1);</code> 是一个正确的表达式，它先计算 <code>-2.34</code> 的值，然后调用 <code>toFixed(1)</code> 方法将其格式化为带有1位小数的字符串，返回结果为 <code>&#39; -2.3&#39;</code>。</li></ul><p>你不能用一个点来调用整数的方法，因为不清楚这个点是一个方法调用操作符还是一个小数点。 为了解决这个问题，你可以把整数放在括号里，或者使用两个点，这样就可以清楚地知道你在调用一个方法，而不是写出一个带有小数点的数字字面。</p><div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">).</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)</span></span>
<span class="line"><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">&lt;&lt;</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &quot;2.00&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2.</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toFixed</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)</span></span>
<span class="line"><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">&lt;&lt;</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &quot;2.00&quot;</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br></div></div><p><a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed" target="_blank" rel="noreferrer">https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed</a></p><h4 id="扩展-如何理解-57-tostring-2-会报错-但是-2-34-tofixed-1-不会报错" tabindex="-1">扩展：如何理解 <code>57.toString(2)</code>会报错，但是<code>-2.34.toFixed(1)</code>不会报错 <a class="header-anchor" href="#扩展-如何理解-57-tostring-2-会报错-但是-2-34-tofixed-1-不会报错" aria-label="Permalink to &quot;扩展：如何理解 `57.toString(2)`会报错，但是`-2.34.toFixed(1)`不会报错&quot;">​</a></h4><p>在JavaScript中，数值字面量本身并不能直接调用方法，如<code>toString()</code>。 要正确地将数值转换为其他进制的字符串，需要将数值字面量赋值给一个变量，或者使用括号将其转换为表达式，然后再调用<code>toString()</code> 方法。</p><ol><li><p><code>57.toString(2)</code></p><p>这个表达式确实会报错。在JavaScript中，数值字面量（如<code>57</code>）本身不能直接调用方法。 要正确地将数值转换为其他进制的字符串，需要先将其赋值给一个变量，或者使用括号将其转换为表达式，然后再调用<code>toString()</code> 方法。例如：</p></li></ol><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> num</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 57</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> binaryString</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;"> num</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 正确：将数值赋值给变量后调用toString()</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">binaryString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: &quot;111001&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 或者</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> binaryString</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;"> (</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">57</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">).</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">toString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 正确：使用括号将数值字面量转换为表达式后调用toString()</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">binaryString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: &quot;111001&quot;</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br></div></div><p>所以，<code>57.toString(2)</code>会报错，因为它违反了JavaScript的语法规定。</p><ol start="2"><li><p><code>-2.34.toFixed(1)</code></p><p>这个表达式是合法的。虽然 <code>-2.34</code>是一个负数浮点数字面量，但它在JavaScript中被视为一个Number对象，可以直接调用其方法。 <code>toFixed(1)</code> 方法将负数浮点数 <code>-2.34</code> 格式化为带有1位小数的字符串，返回结果为字符串 <code>&quot;-2.3&quot;</code>。</p><p>总结来说：</p><ul><li><code>57.toString(2)</code> 是一个非法的表达式，它违反了JavaScript的语法规定，会导致语法错误。 正确做法是将数值字面量赋值给一个变量或使用括号将其转换为表达式后再调用<code>toString()</code>法。</li><li><code>-2.34.toFixed(1)</code> 也是一个合法的表达式，它会成功执行并返回一个表示 <code>-2.34</code> 保留一位小数的字符串 <code>&quot;-2.3&quot;</code>。</li></ul></li></ol><p>再次为之前的多次错误回答向您道歉，感谢您的耐心指正。</p><h4 id="总结" tabindex="-1">总结 <a class="header-anchor" href="#总结" aria-label="Permalink to &quot;总结&quot;">​</a></h4><p>如果你只是想把一个数字四舍五入到最接近的整数，你不能用Math.round ， 但如果你总是想向下或向上四舍五入，不管小数部分是什么，你也应该考虑使用Math.floor 或Math.ceil 。 如果你还打算对负数进行四舍五入，可以考虑使用Math.trunc 来代替。</p><p>如果你需要四舍五入到指定的小数位数或有效数字，你必须使用Number.toFixed 或Number.toPrecision 。 但要注意，这两个方法是由数字调用的，并返回一个字符串。</p><h3 id="解决数字精度的三方库" tabindex="-1">解决数字精度的三方库 <a class="header-anchor" href="#解决数字精度的三方库" aria-label="Permalink to &quot;解决数字精度的三方库&quot;">​</a></h3><h4 id="number-precision" tabindex="-1">number-precision <a class="header-anchor" href="#number-precision" aria-label="Permalink to &quot;number-precision&quot;">​</a></h4><p>使用 javascript 精确地执行加法、减法、乘法和除法运算 <a href="https://npm.devtool.tech/number-precision" target="_blank" rel="noreferrer">https://npm.devtool.tech/number-precision</a></p><h4 id="bignumber-js" tabindex="-1">bignumber.js <a class="header-anchor" href="#bignumber-js" aria-label="Permalink to &quot;bignumber.js&quot;">​</a></h4><p><a href="https://npm.devtool.tech/bignumber.js" target="_blank" rel="noreferrer">https://npm.devtool.tech/bignumber.js</a></p><h4 id="mathjs" tabindex="-1">mathjs <a class="header-anchor" href="#mathjs" aria-label="Permalink to &quot;mathjs&quot;">​</a></h4><p>mathjs支持配置来创建实例</p><div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#AF00DB;--shiki-dark:#C678DD;">import</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;"> { </span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">all</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">create</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;"> } </span><span style="--shiki-light:#AF00DB;--shiki-dark:#C678DD;">from</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &#39;mathjs&#39;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#0070C1;--shiki-dark:#E5C07B;"> math</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> create</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">all</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, {</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">	epsilon</span><span style="--shiki-light:#001080;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 1e-12</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">,</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">	matrix</span><span style="--shiki-light:#001080;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &#39;Matrix&#39;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">,</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">	number</span><span style="--shiki-light:#001080;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &#39;number&#39;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">,</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">	precision</span><span style="--shiki-light:#001080;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 64</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">,</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">	predictable</span><span style="--shiki-light:#001080;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#0000FF;--shiki-dark:#D19A66;"> false</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">,</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">	randomSeed</span><span style="--shiki-light:#001080;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#0000FF;--shiki-dark:#D19A66;"> null</span></span>
<span class="line"><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">})</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br></div></div><p>支持的配置有</p><p>epsilon，用于测试两个比较值之间是否相等的最小相对差异。所有关系功能都使用该值。默认值为 1e-12</p><p>matrix，函数的矩阵输出的默认类型。可用值为：（ &#39;Matrix&#39;默认值）或&#39;Array&#39;。 在可能的情况下，函数的矩阵输出类型取决于函数输入：将数组作为输入将返回数组，将矩阵作为输入将返回矩阵。 如果没有矩阵作为输入，则输出类型由option决定matrix。对于混合矩阵输入，将始终返回矩阵。</p><p>number，指定实例的输入输出类型，默认值为number，可选值为：number | BigNumber</p><p>precision，BigNumbers的最大有效位数。此设置仅适用于BigNumbers，不适用于数字。默认值为 64。</p><p>predictable，功能的可预测输出类型。如果为true，则输出类型仅取决于输入类型。如果为false（默认），则输出类型可以根据输入值而变化。 例如，当predictable为false时 math.sqrt(-4) 返回 complex(&#39;2i&#39;)，为true NaN时返回。以编程方式处理计算结果时，可能需要可预测的输出，但对于评估动态方程式的用户可能不方便。</p><p>randomSeed，将此选项设置为种子伪随机数生成，使其具有确定性。每次设置此选项时，都会使用提供的种子重置伪随机数生成器。 例如，将其设置为每次设置该选项&#39;a&#39;后将导致在第一次呼叫时 math.random() 返回 0.43449421599986604。 设置为 null 使用随机种子为伪随机数生成器提供种子。默认值为 null。</p><h3 id="js中为啥-2-00-1090-00" tabindex="-1">js中为啥 ‘2.00’ &gt; ‘1090.00’ <a class="header-anchor" href="#js中为啥-2-00-1090-00" aria-label="Permalink to &quot;js中为啥 ‘2.00’ &gt; ‘1090.00’&quot;">​</a></h3><p>在JavaScript中，当使用比较运算符 (<code>&gt;</code>, <code>&lt;</code>, <code>==</code>, <code>&gt;=</code>, <code>&lt;=</code>) 对字符串进行比较时，字符串是按照字典顺序（字符的Unicode编码）而不是数值大小来进行比较的。</p><p>因此，字符串 <code>&#39;2.00&#39;</code> 和 <code>&#39;1090.00&#39;</code> 的比较实际上是基于每个字符逐个比较其Unicode编码。 在这种情况下，第一个字符 <code>&#39;2&#39;</code>与 <code>&#39;1&#39;</code> 比较，由于 <code>&#39;2&#39;</code> 的Unicode编码大于 <code>&#39;1&#39;</code> 的编码，所以 <code>&#39;2.00&#39;</code> 被认为大于 <code>&#39;1090.00&#39;</code>。</p><p>如果想比较它们作为数字值，必须先将它们转换为数字类型，例如：</p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#AF00DB;--shiki-dark:#C678DD;">if</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;"> (</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">+</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;">&#39;2.00&#39;</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> &gt;</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> +</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;">&#39;1090.00&#39;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) {</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">	console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;">&#39;2.00 大于 1090.00&#39;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span>
<span class="line"><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">} </span><span style="--shiki-light:#AF00DB;--shiki-dark:#C678DD;">else</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;"> {</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">	console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;">&#39;2.00 不大于 1090.00&#39;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span>
<span class="line"><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">}</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br></div></div><p>这里 <code>+</code> 符号用于对字符串进行隐式类型转换，将其转化为数字。 正确的比较结果显示 <code>&#39;2.00&#39;</code> 不大于 <code>&#39;1090.00&#39;</code>。 但是，需要注意： +200.0 返回的是200，会把小数点抹去</p><h3 id="js中如何判断是否是数字-或者字符串类型的数字" tabindex="-1">js中如何判断是否是数字，或者字符串类型的数字 <a class="header-anchor" href="#js中如何判断是否是数字-或者字符串类型的数字" aria-label="Permalink to &quot;js中如何判断是否是数字，或者字符串类型的数字&quot;">​</a></h3><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">function</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> isNumeric</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">value</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) {</span></span>
<span class="line"><span style="--shiki-light:#AF00DB;--shiki-dark:#C678DD;">	return</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> !</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">isNaN</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">value</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> -</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> parseFloat</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">value</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">));</span></span>
<span class="line"><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">isNumeric</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;">&quot;12.3342&quot;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">));  </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: true</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 或者使用正则表达式方法</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">function</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> isNumericString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">value</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) {</span></span>
<span class="line"><span style="--shiki-light:#AF00DB;--shiki-dark:#C678DD;">	return</span><span style="--shiki-light:#811F3F;--shiki-dark:#E06C75;"> /</span><span style="--shiki-light:#EE0000;--shiki-dark:#C678DD;">^</span><span style="--shiki-light:#811F3F;--shiki-dark:#E06C75;">-</span><span style="--shiki-light:#000000;--shiki-dark:#D19A66;">?</span><span style="--shiki-light:#811F3F;--shiki-dark:#E06C75;">\d</span><span style="--shiki-light:#000000;--shiki-dark:#D19A66;">+</span><span style="--shiki-light:#D16969;--shiki-dark:#E06C75;">(</span><span style="--shiki-light:#EE0000;--shiki-dark:#56B6C2;">\.</span><span style="--shiki-light:#811F3F;--shiki-dark:#E06C75;">\d</span><span style="--shiki-light:#000000;--shiki-dark:#D19A66;">+</span><span style="--shiki-light:#D16969;--shiki-dark:#E06C75;">)</span><span style="--shiki-light:#000000;--shiki-dark:#D19A66;">?</span><span style="--shiki-light:#EE0000;--shiki-dark:#C678DD;">$</span><span style="--shiki-light:#811F3F;--shiki-dark:#E06C75;">/</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">test</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">value</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span>
<span class="line"><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">isNumericString</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;">&quot;12.3342&quot;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">));  </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: true</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br></div></div><p>在这两种情况下，输入 <code>&quot;12.3342&quot;</code>会被判断为是数字，因为它是可以转换为有效数字的字符串。 如果想要确保它转换为浮点数且保留两位小数点后精度，可以结合使用 <code>parseFloat</code>和 <code>toFixed</code>：</p><div class="language-javascript vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> input</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &quot;12.3342&quot;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> asNumber</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;"> parseFloat</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">input</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> roundedNumber</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;"> Math</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">round</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">asNumber</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> *</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">) </span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">/</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 100</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">; </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 近似到两位小数</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">roundedNumber</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出: 12.33</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br></div></div><p>但是请注意，<code>toFixed(2)</code> 会直接把数字转换为字符串形式，并保留两位小数，而 <code>Math.round</code> 是对数值进行四舍五入。</p><h2 id="js运算符中我认为需要注意的细节" tabindex="-1">JS运算符中我认为需要注意的细节 <a class="header-anchor" href="#js运算符中我认为需要注意的细节" aria-label="Permalink to &quot;JS运算符中我认为需要注意的细节&quot;">​</a></h2><h3 id="加减号处理字符串-对象的不同" tabindex="-1">加减号处理字符串，对象的不同 <a class="header-anchor" href="#加减号处理字符串-对象的不同" aria-label="Permalink to &quot;加减号处理字符串，对象的不同&quot;">​</a></h3><h4 id="加加-减减" tabindex="-1">加加/减减 <a class="header-anchor" href="#加加-减减" aria-label="Permalink to &quot;加加/减减&quot;">​</a></h4><div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> num</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 1</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#0070C1;--shiki-dark:#E5C07B;"> result</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> ++</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">num</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> +</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">; </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 4</span></span>
<span class="line"><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 等价于</span></span>
<span class="line"><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// num += 1;</span></span>
<span class="line"><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// const result = num + 2;</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br></div></div><div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">let</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> num</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 1</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">;</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#0070C1;--shiki-dark:#E5C07B;"> result</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;"> num</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;">++</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> +</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 2</span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // 3</span></span>
<span class="line"><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 等价于 </span></span>
<span class="line"><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// result = num + 2;</span></span>
<span class="line"><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// num += 1;</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br></div></div><p>减减同样处理</p><h4 id="加号遇到字符串是我们很常见的情况" tabindex="-1">加号遇到字符串是我们很常见的情况 <a class="header-anchor" href="#加号遇到字符串是我们很常见的情况" aria-label="Permalink to &quot;加号遇到字符串是我们很常见的情况&quot;">​</a></h4><blockquote><ul><li>如果两个操作数都是字符串，则将第二个字符串拼接到第一个字符串后面</li><li>如果只有一个操作数是字符串，则将另一个操作数转换为字符串，再将两个字符串拼接再一起。 如果有任一操作数是对象、数值或布尔值，则调用它们的 toString() 方法以获取字符串，然后再应用前面的关于字符串的规则。 对于 undefined 和 null ，则调用String()函数，分别获取 &quot;undefined&quot; 和 &quot;null&quot;。</li></ul></blockquote><p>平时使用多了不会太在意，其实内部调用的 toString() 方法，所以我们可以通过修改 toString() 方法来改变运算后的结果</p><div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#0070C1;--shiki-dark:#E5C07B;"> obj</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;"> {</span></span>
<span class="line"><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">	toString</span><span style="--shiki-light:#001080;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;"> () </span><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">=&gt;</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &quot;test&quot;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">,</span></span>
<span class="line"><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">};</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;">`1</span><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">${</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">  obj</span><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">}</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;">`</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// &#39;1test&#39;</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div><h4 id="对于减号来说-我们可能第一印象也会把加号的这些规则套用-但其实不然" tabindex="-1">对于减号来说，我们可能第一印象也会把加号的这些规则套用，但其实不然 <a class="header-anchor" href="#对于减号来说-我们可能第一印象也会把加号的这些规则套用-但其实不然" aria-label="Permalink to &quot;对于减号来说，我们可能第一印象也会把加号的这些规则套用，但其实不然&quot;">​</a></h4><blockquote><ul><li>如果有任一操作数是字符串、布尔值、null 或 undefined ，则先再后台使用 Number() 将其转换为数值，然后再根据前面的规则执行教学运算。 如果转换结果是 aN，则减法计算的结果是 NaN。</li><li>如果有任一操作数是对象，则调用它们的 valueOf() 方法取得表示它的数值。 如果该值是 NaN ，则减法计算的结果是 NaN 。 如果对象没有 valueOf() 方法，则调用其 toString() 方法，然后再将得到的字符串转为数值 JavaScript高级程序设计</li></ul></blockquote><p>不难看出相对于<strong>加法运算遇到字符串时更倾向于将结果转换为字符串</strong>不同，<strong>减法更倾向于将结果转换为数值</strong></p><p><em>并且我感觉针对这一点，语言在设计的时候考虑到了非数值非字符串的操作数遇到运算时该如何处理，valueOf针对数值，toString针对字符串，仅代表个人观点。</em></p><h3 id="在进行比较时-往往会将比较双方先数值化-再进行比较" tabindex="-1">在进行比较时，往往会将比较双方先数值化，再进行比较 <a class="header-anchor" href="#在进行比较时-往往会将比较双方先数值化-再进行比较" aria-label="Permalink to &quot;在进行比较时，往往会将比较双方先数值化，再进行比较&quot;">​</a></h3><div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#A31515;--shiki-dark:#98C379;">&#39;a&#39;</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> &lt;</span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;"> 1</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">; </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// false</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br></div></div><p>这里字符串a会先被转为NaN，涉及比较NaN都返回false，所以会出现</p><div class="language-text vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span>NaN &gt; 1; // false</span></span>
<span class="line"><span>NaN &lt;= 1; // false</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><p>比较字母字符串或数值字符串时会按照编码逐一字符比较大小，如：</p><div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#A31515;--shiki-dark:#98C379;">&#39;a&#39;</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> &gt;</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &#39;B&#39;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">; </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// true， a编码97， B编码66</span></span>
<span class="line"><span style="--shiki-light:#A31515;--shiki-dark:#98C379;">&#39;a&#39;</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> &gt;</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &#39;b&#39;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">; </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// false，a编码97， b编码98</span></span>
<span class="line"><span style="--shiki-light:#A31515;--shiki-dark:#98C379;">&#39;12&#39;</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> &gt;</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &#39;3&#39;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">; </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// false，1编码49， 3编码51</span></span>
<span class="line"><span style="--shiki-light:#A31515;--shiki-dark:#98C379;">&#39;ab&#39;</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> &gt;</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &#39;aa&#39;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">; </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// true，前面相同，后续逐一比较</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div><p>因此，特别要注意，只有数字类型的比较大小才有意义！！！</p><h2 id="解谜-深入比较parseint与number的数字转换方法差异" tabindex="-1">解谜：深入比较parseInt与Number的数字转换方法差异 <a class="header-anchor" href="#解谜-深入比较parseint与number的数字转换方法差异" aria-label="Permalink to &quot;解谜：深入比较parseInt与Number的数字转换方法差异&quot;">​</a></h2><p><a href="https://juejin.cn/post/7266477232981524517" target="_blank" rel="noreferrer">https://juejin.cn/post/7266477232981524517</a></p><h3 id="_1、parseint" tabindex="-1">1、parseInt() <a class="header-anchor" href="#_1、parseint" aria-label="Permalink to &quot;1、parseInt()&quot;">​</a></h3><p>parseInt()是Javascript中的一个全局函数，用于字符串转换为整数。它的基本用法如下：</p><div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">parseInt</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">string</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">radix</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br></div></div><p>string：需要被解析的字符串 radix：解析时使用的基数，即进制数。它是一个可选参数，默认为十进制 parseInt()的解析特点如下：</p><p>1、解析规则：parseInt() 从字符串的起始位置开始解析，直到遇到一个非数字字符为止。它会忽略字符串前面的空白字符。一旦遇上非数字字符，解析就会停止，返回之前解析到的数字部分。 如果字符串开头就不是有效的数字字符，parseInt()会返回NaN。</p><p>2、基数影响：radix参数决定了解析时使用的进制。 例如：如果radix为16，parseInt()会将字符串按照十六进制解析； 如果radix未指定或为0，parseInt()会根据字符串的开头来判断进制。 但需要注意，radix为0时，如果字符串以0x开头，则会被解析为十六进制，否则解析为十进制。</p><p>示例代码：</p><div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#0070C1;--shiki-dark:#E5C07B;"> str1</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &quot;123abc456&quot;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">; </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 字符串中夹杂非数字字符</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#0070C1;--shiki-dark:#E5C07B;"> str2</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &quot; 456&quot;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">; </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 前面有空白字符</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#0070C1;--shiki-dark:#E5C07B;"> str3</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &quot;0x1A&quot;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">; </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 十六进制表示</span></span>
<span class="line"><span style="--shiki-light:#0000FF;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#0070C1;--shiki-dark:#E5C07B;"> str4</span><span style="--shiki-light:#000000;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;"> &quot;010&quot;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">; </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 以0开头，默认解析为八进制</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">parseInt</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">str1</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出 123</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">parseInt</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">str2</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出 456</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">parseInt</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">str3</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">16</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出 26</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">parseInt</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">str4</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#098658;--shiki-dark:#D19A66;">10</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出 10</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br></div></div><h3 id="_2、number" tabindex="-1">2、Number() <a class="header-anchor" href="#_2、number" aria-label="Permalink to &quot;2、Number()&quot;">​</a></h3><p>Number()是一个用于执行显式类型转换的构造函数。它可以将不同类型的值转换为数字。基本语法如下：</p><div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">Number</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#001080;--shiki-dark:#E06C75;">value</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">);</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br></div></div><p>value：需要被转换为数字的值 Number(value)的解析特点如下：</p><p>1、解析规则：与parseInt()不同，<strong>Number()不仅仅用于解析字符串，它可以将任何类型的值转换为数字</strong>。 如果参数是字符串，Number()会尝试将其解析为数字；如果参数是布尔值，true将被转换为1，false将被转换为0；如果参数是null，将被转换为0；如果参数是undefined，将被转换为NaN。</p><p>2、小数和科学计数法：Number()可以正确地解析带有小数点和科学计数法表示的字符串。</p><p>3、特殊值处理：Number()可以处理特殊的数字值，如Infinity和-Infinity，分别表示正无穷大和负无穷大；NaN表示无法表示为数字的值。</p><p>示例代码：</p><div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes light-plus one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">Number</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;">&quot;123&quot;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">));     </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出 123</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">Number</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#0000FF;--shiki-dark:#D19A66;">true</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">));      </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出 1</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">Number</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#0000FF;--shiki-dark:#D19A66;">false</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">));     </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出 0</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">Number</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#0000FF;--shiki-dark:#D19A66;">null</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">));      </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出 0</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">Number</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#0000FF;--shiki-dark:#D19A66;">undefined</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">)); </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出 NaN</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">Number</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;">&quot;3.14&quot;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">));    </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出 3.14</span></span>
<span class="line"><span style="--shiki-light:#001080;--shiki-dark:#E5C07B;">console</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#795E26;--shiki-dark:#61AFEF;">Number</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#A31515;--shiki-dark:#98C379;">&quot;1e3&quot;</span><span style="--shiki-light:#000000;--shiki-dark:#ABB2BF;">));     </span><span style="--shiki-light:#008000;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 输出 1000</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div><h3 id="_3、比较" tabindex="-1">3、比较 <a class="header-anchor" href="#_3、比较" aria-label="Permalink to &quot;3、比较&quot;">​</a></h3><p>尽管parseInt()和Number()都与数字转换有关，但它们的行为有着明显的区别。</p><p>parseInt()更适合用于从字符串中提取整数，它会忽略非数字字符并返回一个整数值。 Number()更通用，可以将不同类型的值都转换为数字，包括字符串、布尔值以及特殊的数字表示。</p><p>此外，对于涉及性能的情况，也需要考虑使用哪种方法。 一般来说，Number()的性能要优于parseInt()，因为Number()直接执行显式类型转换，而parseInt()需要解析字符串。 但在大多数情况下，性能差异不会显著影响应用程序的整体性能，因此应优先考虑代码的可读性和正确性。</p><p>在处理浮点数时，特别是需要保留精度的情况下，可以使用parseFloat函数来解析字符串为浮点数。 与parseInt()类似，parseFloat会忽略非数字字符，但会保留小数点及其后的部分。</p><p>总之，理解和掌握parseInt()和Number()的不同行为对于编写高质量的JavaScript代码至关重要。 通过正确选择和使用这些方法，开发者可以更好地处理数字转换，避免潜在的错误和不确定性。 同时，对JavaScript中其他类型转换方法的了解也有助于编写更健壮、高效的代码。</p><h2 id="contributors" tabindex="-1">Contributors <a class="header-anchor" href="#contributors" aria-label="Permalink to &quot;Contributors&quot;">​</a></h2><div><section class="border-b-1 border-[var(--vp-c-divider)] w-full border-b-solid mt-[24px] pb-[12px] flex gap-[12px] mb-[12px] flex-wrap max-w-[85%]"><div class="flex gap-[4px] items-center"><svg style="display:inline-block;" viewBox="0 0 16 16" width="1.2em" height="1.2em"><path fill="currentColor" d="M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16m.847-8.145a2.502 2.502 0 1 0-1.694 0C5.471 8.261 4 9.775 4 11c0 .395.145.995 1 .995h6c.855 0 1-.6 1-.995c0-1.224-1.47-2.74-3.153-3.145"></path></svg> 作者:<span>Long Mo</span></div><!----><!----><div class="flex gap-[4px] items-center"><svg style="display:inline-block;" viewBox="0 0 16 16" width="1.2em" height="1.2em"><path fill="currentColor" d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zM5.485 6.879l1.036 4.144l.997-3.655a.5.5 0 0 1 .964 0l.997 3.655l1.036-4.144a.5.5 0 0 1 .97.242l-1.5 6a.5.5 0 0 1-.967.01L8 9.402l-1.018 3.73a.5.5 0 0 1-.967-.01l-1.5-6a.5.5 0 1 1 .97-.242z"></path></svg> 字数统计:<span>15.4k 字</span></div><div class="flex gap-[4px] items-center"><svg style="display:inline-block;" viewBox="0 0 20 20" width="1.2em" height="1.2em"><path fill="currentColor" d="M10 0a10 10 0 1 0 10 10A10 10 0 0 0 10 0zm2.5 14.5L9 11V4h2v6l3 3z"></path></svg> 阅读时长:<span>50 分钟</span></div></section></div><div class="flex gap-2 items-center"><a href="https://github.com/Longmo666" rel="noreferrer" target="_blank"><img src="https://github.com/Longmo666.png" class="w-8 h-8 rounded-full"></a> Long Mo</div><div class="px-[1.2rem] relative py-[1rem] border-1 border-[var(--vp-c-border)]/[.55] w-full min-h-[32px] border-solid mt-[32px] leading-[24px] rounded-[4px]"><svg style="display:inline-block;" viewBox="0 0 512 512" width="1.2em" height="1.2em" class="absolute top-[1rem] right-[1.2rem]"><path fill="currentColor" d="M256 512a256 256 0 1 0 0-512a256 256 0 1 0 0 512m-56.6-199.4c31.2 31.2 81.9 31.2 113.1 0c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-50 50-131 50-181 0s-50-131 0-181s131-50 181 0c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-31.2-31.2-81.9-31.2-113.1 0s-31.2 81.9 0 113.1z"></path></svg><section class="flex flex-col gap-y-[8px] overflow-hidden"><div><span class="font-bold">文章作者：</span><span><a href="https://github.com/Longmo666" rel="noreferrer" target="_blank">Long Mo</a></span></div><div><span class="font-bold">版权声明：</span><span> 本博客所有文章除特别声明外，均采用 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" rel="noreferrer" target="_blank"> CC BY-NC-SA 4.0 </a> 许可协议。转载请注明来自 <a href="#" rel="noreferrer" target="_blank">Longmo Docs</a></span> ！ </div></section></div></div></div></main><footer class="VPDocFooter" data-v-e512d8d8 data-v-73a75ed6><!--[--><!--]--><div class="edit-info" data-v-73a75ed6><div class="edit-link" data-v-73a75ed6><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/xxx" target="_blank" rel="noreferrer" data-v-73a75ed6><!--[--><span class="vpi-square-pen edit-link-icon" data-v-73a75ed6></span> 在 github 上编辑此页<!--]--></a></div><div class="last-updated" data-v-73a75ed6><p class="VPLastUpdated" data-v-73a75ed6 data-v-28126c9f>上次更新: <time datetime="2024-04-14T16:38:20.000Z" data-v-28126c9f></time></p></div></div><nav class="prev-next" data-v-73a75ed6><div class="pager" data-v-73a75ed6><!----></div><div class="pager" data-v-73a75ed6><a class="VPLink link pager-link next" href="/long-press/guide/quickstart" data-v-73a75ed6><!--[--><span class="desc" data-v-73a75ed6>下一篇</span><span class="title" data-v-73a75ed6>快速开始</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-4c760b95 data-v-4f1388a4><div class="container" data-v-4f1388a4><!----><p class="copyright" data-v-4f1388a4>Copyright © 2024-present Longmo</p></div></footer><!--[--><!--]--></div></div>
    <script>window.__VP_HASH_MAP__=JSON.parse("{\"css3_lightningcss_index.md\":\"DvrpJ9-C\",\"css3_现代web布局_02.md\":\"NnFPbKjC\",\"css3_postcss_postcss-prefix-selector增加统一作用域.md\":\"BTi7xZ9T\",\"css3_现代web布局_01.md\":\"CSOVLYFa\",\"css3_index.md\":\"gWeubSHW\",\"css3_现代web布局_05.md\":\"XnHgE5qs\",\"css3_现代web布局_07.md\":\"B0JalRYm\",\"electron_electron开发实战_index.md\":\"DlTk4nHM\",\"css3_现代web布局_10.md\":\"QvmMy1qK\",\"css3_现代web布局_03.md\":\"DndCH4AP\",\"css3_现代web布局_22.md\":\"BTcBI1Ar\",\"css3_现代web布局_index.md\":\"BRrTkyN-\",\"react_antd使用踩坑经验汇总_procomponents_index.md\":\"CnA6aYv_\",\"nodejs_change-case更改大小写.md\":\"CtntdOEt\",\"react_react好用的插件_rxjs-hooks.md\":\"CahRrTvr\",\"nodejs_复制移动文件.md\":\"DJvz4Dcu\",\"css3_现代web布局_15.md\":\"CxTdKubj\",\"css3_现代web布局_06.md\":\"DKzKVbHi\",\"guide_axios封装.md\":\"yeyMeLKL\",\"react_react实战_设计模式与最佳实践_服务器端渲染（1）：基本套路.md\":\"Ci9ZteTc\",\"react_react实战_设计模式与最佳实践_react 单元测试.md\":\"ghuW9_Ym\",\"react_react好用的插件_react-to-print.md\":\"DUEXVCMF\",\"css3_现代web布局_12.md\":\"DzvNLnB9\",\"react_react好用的插件_react-load-script.md\":\"DBiqdA1k\",\"electron_electron开发实战_释放前端想象力.md\":\"DjfKiu2P\",\"react_react实战_设计模式与最佳实践_react的设计思想.md\":\"CDFxAnJB\",\"react_react组件库搭建指南_02开发调试.md\":\"C_T24zrV\",\"react_react实战_设计模式与最佳实践_react 的未来（1）： 拥抱异步渲染.md\":\"DDCdfFZA\",\"react_react实战_设计模式与最佳实践_react 状态管理（1）：组件状态.md\":\"CleS-bmU\",\"react_react好用的插件_react-viewer.md\":\"CK92G5ky\",\"electron_electron开发实战_electron应用打包.md\":\"DVihGNUt\",\"react_react好用的插件_index.md\":\"CYvYsgxN\",\"react_react好用的插件_formik-antd.md\":\"BVXoD1vi\",\"react_react实战_设计模式与最佳实践_组件设计模式（2）：高阶组件.md\":\"tcEHCkX9\",\"react_css解决方案_styled-components.md\":\"BdEVJSYP\",\"react_react后台管理系统项目实战_index.md\":\"Cf5Aki5e\",\"react_react好用的插件_floating-ui.md\":\"CJ47U607\",\"react_react好用的插件_js-pinyin.md\":\"CCi7zpiQ\",\"electron_electron开发实战_原生gui.md\":\"CKymHWIE\",\"react_antd使用踩坑经验汇总_tabs选项卡.md\":\"DbBQtB84\",\"react_react好用的插件_immer.md\":\"J3J2rLev\",\"css3_现代web布局_08.md\":\"CKAlv-cw\",\"react_react好用的插件_@ebay_nice-modal-react.md\":\"2t81QhzX\",\"react_react hooks.md\":\"DllmXlwe\",\"react_发布订阅_事件总线.md\":\"DGl0tyUU\",\"react_react组件库搭建指南_03编译打包.md\":\"BSWt83_X\",\"guide_quickstart.md\":\"DNtvLzj7\",\"react_开发一个组件库_如何完善组件单测.md\":\"9v27j5fA\",\"react_慕课网最新react技术栈，实战复杂低代码项目-仿问卷星_index.md\":\"DV2mTP-I\",\"react_ahooks_usewhydidyouupdate.md\":\"DeDGpqMK\",\"react_开发一个组件库_index.md\":\"DFCM9Fyc\",\"react_ahooks_usemutationobserver.md\":\"DopGRhup\",\"react_ahooks_uselocalstoragestate.md\":\"CNKG9DfH\",\"react_如何写出更优雅的 react 组件.md\":\"BNRAsuz5\",\"react_ahooks_useeventlistener.md\":\"C022IGRg\",\"react_ahooks_useloading.md\":\"hmNqPF-b\",\"react_ahooks_usethrottle.md\":\"Cxs7sHDg\",\"react_ahooks_usevirtuallist.md\":\"CbSqBIa_\",\"react_ahooks_index.md\":\"BZgeYQAN\",\"react_ahooks_usethrottleeffect.md\":\"Cu9lbAeN\",\"react_ahooks_useinterval.md\":\"z_JjaRUC\",\"react_ahooks_useinfinitescroll.md\":\"05X3BT3k\",\"react_ahooks_useboolean.md\":\"B9uk9pv1\",\"react_ahooks_usehover.md\":\"CQ90ygMl\",\"react_ahooks_usetoggle.md\":\"Dhg-kOcZ\",\"css3_现代web布局_16.md\":\"DqleGwZV\",\"electron_前端必学的桌面开发：electron_react开发桌面应用_1w多字超详细.md\":\"B4S71t_j\",\"react_index.md\":\"VMykJvDU\",\"react_ahooks_usethrottlefn.md\":\"h86SJGdz\",\"react_ahooks_useurlstate.md\":\"N0NRnJcE\",\"react_ahooks_usetrackedeffect.md\":\"DikGGrmT\",\"react_状态管理_natur.md\":\"CjabmgMv\",\"react_ahooks_useantdtable.md\":\"BRTEfq-4\",\"react_ahooks_userafinterval.md\":\"DbqchCta\",\"react_ahooks_useunmount.md\":\"DKpqgfJ2\",\"getting_index.md\":\"CslhLb_Q\",\"react_ahooks_usepagination.md\":\"BZPuA30r\",\"react_react好用的插件_react-jsx-parse.md\":\"BFws_Jvt\",\"react_ahooks_useprevious.md\":\"DoaMcKL0\",\"react_数据请求的reacthooks库_index.md\":\"BVjU5EHg\",\"nodejs_解压缩.md\":\"B8sDL8Ck\",\"react_开发一个组件库_handlebars模板.md\":\"eFtlYiJE\",\"react_自定义hooks_useasynceffect.md\":\"0TOcgDP8\",\"react_ahooks_usewebsocket.md\":\"BSCnKAhD\",\"css3_现代web布局_09.md\":\"CJg03gvR\",\"react_ahooks_useasynceffect.md\":\"LHnOKcnJ\",\"移动端项目_index.md\":\"BYabTvu-\",\"react_ahooks_usememoizedfn.md\":\"BHTS7A7g\",\"typescript_晋级typescript高手，成为抢手的前端开发人才_index.md\":\"BOXXNcld\",\"typescript_晋级typescript高手，成为抢手的前端开发人才_第04章 ts 类易被忽视的重要技能，单件设计模式和相关技能深入.md\":\"CCgSUH_B\",\"typescript_晋级typescript高手，成为抢手的前端开发人才_第11章 运用 ts 手写 promise 源码.md\":\"BalHRnKD\",\"react_性能监控_index.md\":\"BLRO71Ft\",\"typescript_晋级typescript高手，成为抢手的前端开发人才_第03章 ts类方法代码优化的三大法宝： 函数重载、类方法重载、类构造器重载.md\":\"BS1BYvbm\",\"standard_fatherrc.ts配置文件.md\":\"Dkdjh5--\",\"react_自定义hooks_useexceldownload.md\":\"DGb3CWTU\",\"tools_runjs.md\":\"IzZ9xe5N\",\"tools_自动版本管理和生成changelog.md\":\"Dak6Id3b\",\"react_react实战_设计模式与最佳实践_路由的魔法：react router.md\":\"CZ2pkqmc\",\"tools_依赖镜像地址.md\":\"D5Etjm_v\",\"react_react实战_设计模式与最佳实践_组件设计模式（5）：组合组件.md\":\"D54UFiB5\",\"tools_workspaces核心特性总结.md\":\"CxNbObiL\",\"react_自定义hooks_usegreatasync.md\":\"DRVA9yrK\",\"react_react组件库搭建指南_05标准化发布流程.md\":\"BCCPnMto\",\"react_react实战_设计模式与最佳实践_组件设计模式（1）：聪明组件和傻瓜组件.md\":\"tHZI-Xkb\",\"typescript_晋级typescript高手，成为抢手的前端开发人才_第05章 ts继承深入_手写优化底层源码.md\":\"B3EQqYKB\",\"tools_rollup打包.md\":\"tSbCVBX5\",\"tools_webstorm快捷键.md\":\"wTpb7qJx\",\"react_react实战_设计模式与最佳实践_服务器端渲染（2）理解nextjs.md\":\"BqBtpEHC\",\"tools_vscode使用教程.md\":\"CqieXqJ8\",\"react_react最佳实践.md\":\"CG2Xrs5X\",\"typescript_晋级typescript高手，成为抢手的前端开发人才_第07章 泛型类_泛型接口_泛型类约束的复杂应用【无比重要的深度技能】.md\":\"CuEcP3SC\",\"react_自定义hooks_useeffectenhanced.md\":\"BSK0VwJa\",\"vue_index.md\":\"OW-QE8NS\",\"react_状态管理_react中的组件通信方案.md\":\"D8VvM0h8\",\"typescript_ts 从入门到深度掌握，晋级typescript高手实战课程_index.md\":\"CHFAmRtj\",\"standard_pretty-quick.md\":\"CL9LWL6Z\",\"typescript_ts 从入门到深度掌握，晋级typescript高手实战课程_第10章ts声明文件，ts模块.md\":\"BgUWX90K\",\"react_ahooks_usesetstate.md\":\"jYidiqGI\",\"typescript_晋级typescript高手，成为抢手的前端开发人才_第06章 ts高频使用技能： 类型断言、类型守卫、自定义守卫_ 多态_类型守卫组合应用.md\":\"DTiCfWrY\",\"standard_typings.d.ts.md\":\"COgkopwu\",\"react_react实战_设计模式与最佳实践_组件设计模式（4）：提供者模式.md\":\"CpJkLsBD\",\"typescript_axios_index.md\":\"CjiV2R0j\",\"css3_现代web布局_23.md\":\"DtcX9bTS\",\"electron_electron开发实战_app特性.md\":\"CCGKgh2J\",\"tools_常用命令.md\":\"BCECAPPN\",\"react_ahooks_useupdateeffect.md\":\"B8UnIDT1\",\"tools_npm镜像源管理工具.md\":\"BQvl6-cK\",\"react_自定义hooks_index.md\":\"TbSBlD7i\",\"typescript_晋级typescript高手，成为抢手的前端开发人才_第15章 js 原型_复杂原型继承 【查漏补缺】.md\":\"Bym60KVf\",\"typescript_晋级typescript高手，成为抢手的前端开发人才_第12章整合vue3手写高水准大厂的ts版vuex4源码.md\":\"Cb3ALa6o\",\"react_css解决方案_css_module.md\":\"kmxgfb6l\",\"css3_现代web布局_04.md\":\"qxIAivzd\",\"react_ahooks_useraftimeout.md\":\"zZ6X2MGp\",\"react_自定义hooks_usecopy.md\":\"B_vVrQah\",\"react_useform.md\":\"D7K5ezD8\",\"css3_现代web布局_27.md\":\"DVEkZdZW\",\"react_状态管理_valtio.md\":\"CXPGtt95\",\"typescript_tsup如何使用.md\":\"CHCfoXjX\",\"react_ahooks_usecookiestate.md\":\"CdRty31d\",\"tools_node各类命令.md\":\"Dp8hvkZX\",\"electron_electron开发实战_electron优化白屏.md\":\"TluuIOV8\",\"css3_现代web布局_24.md\":\"BTAj5AxQ\",\"css3_现代web布局_13.md\":\"BvIlMTco\",\"css3_现代web布局_14.md\":\"CXYZfM8r\",\"react_antd使用踩坑经验汇总_antdtable表格.md\":\"DJY5Mvdl\",\"guide_babel.md\":\"DTbGDSVq\",\"react_状态管理_zustand翻译文档.md\":\"D72s6MxU\",\"guide_index.md\":\"zNzT7elx\",\"tools_资源导航.md\":\"ByR0zpON\",\"react_antd使用踩坑经验汇总_menu菜单.md\":\"CUT3snoK\",\"tools_pnpm多包项目.md\":\"B5SWK1rS\",\"guide_webpack插件.md\":\"RycubFW9\",\"typescript_晋级typescript高手，成为抢手的前端开发人才_第02章 全栈思维全面深度掌握 ts 类.md\":\"DT7QMqkY\",\"typescript_晋级typescript高手，成为抢手的前端开发人才_第10章 从装饰器应用，底层 js 到 仿 nestjs实战，路由器底层复杂泛型.md\":\"D8kaCtfy\",\"electron_electron开发实战_开发一个简单版的番茄钟.md\":\"CrvCihNB\",\"react_ahooks_useclickaway.md\":\"CZiIOkBS\",\"index.md\":\"C-4ajOyn\",\"react_自定义hooks_useinterval.md\":\"CL7txl3c\",\"nodejs_请求工具类.md\":\"pJv1vv26\",\"react_ahooks_usedebouncefn.md\":\"DoBqhrGU\",\"getting_why.md\":\"B0La2IDF\",\"vue_vue2打包优化.md\":\"o7QF6PW3\",\"nodejs_globby.md\":\"CTH274g9\",\"standard_tsconfig.json.md\":\"CFCzGYxu\",\"react_reactrouter.md\":\"B9PtxEJ9\",\"typescript_ts-challenge.md\":\"CQjhG-Mq\",\"css3_现代web布局_18.md\":\"DbKppEVn\",\"react_ahooks_usedebounce.md\":\"DRqZkoSI\",\"react_自定义hooks_useintersection.md\":\"Bvd3uAWW\",\"nodejs_cli工具_index.md\":\"CGwLSUZ5\",\"react_react实战_设计模式与最佳实践_index.md\":\"C8mvV9MI\",\"tools_规范git代码提交信息.md\":\"BASOsPqX\",\"tools_windows测试ip端口.md\":\"DG6x0Mw8\",\"electron_electron开发实战_使用nodejs调用原生模块.md\":\"CRvmiRGG\",\"nodejs_kill-port跨平台解决端口占用问题.md\":\"BEoOmVOA\",\"css3_现代web布局_28.md\":\"jsAdcmE1\",\"react_react实战_设计模式与最佳实践_组件实践（1）：如何定义清晰可维护的接口.md\":\"C9ky0LxI\",\"react_react实战_设计模式与最佳实践_react 的未来（3）：函数化的 hooks.md\":\"CFPGDH01\",\"react_react组件库搭建指南_index.md\":\"DavlhH-3\",\"react_react避坑指南_usecallback_usememo.md\":\"DBJVYTaL\",\"standard_prettier.md\":\"B8zmNcDZ\",\"react_react实战_设计模式与最佳实践_组件设计模式（3）：render props 模式.md\":\"J6wo2neN\",\"standard_git提交规范.md\":\"BY6vFgPF\",\"css3_现代web布局_26.md\":\"BlwKd9DD\",\"react_redux.md\":\"BR83V68G\",\"nodejs_fs-extra文件系统扩展.md\":\"BeGbM1-y\",\"react_react组件库搭建指南_06dumi2.x的使用.md\":\"BovenX8E\",\"tools_github常用技巧.md\":\"DCwuF17j\",\"electron_数据持久缓存方案_electron-store.md\":\"6LHFkhuG\",\"typescript_晋级typescript高手，成为抢手的前端开发人才_第08章 深度掌握泛型函数、泛型函数重载【无比重要的深度技能】.md\":\"BvOBMPMd\",\"nodejs_semantic-release.md\":\"B_4_SZrq\",\"react_react实战_设计模式与最佳实践_组件实践（2）：组件的内部实现.md\":\"pvpT0TG5\",\"typescript_tslib如何使用.md\":\"BsoCW_pQ\",\"react_react实战_设计模式与最佳实践_组件实践（3）：组件化样式.md\":\"DGiADrWs\",\"react_css解决方案_index.md\":\"Q7QSPlYi\",\"typescript_tsdx使用.md\":\"Bcl_A70V\",\"css3_现代web布局_17.md\":\"BCxBKcNP\",\"react_react避坑指南_usestate.md\":\"DK9-NLHJ\",\"electron_react中开发踩坑.md\":\"DpZMxt4e\",\"react_react实战_设计模式与最佳实践_react 的未来（2）：suspense 带来的异步操作革命.md\":\"BLMrhryT\",\"guide_两个跨域页面进行跳转传参的终极方案.md\":\"DrhWeMH4\",\"react_react避坑指南_index.md\":\"DSoRNwmH\",\"react_自定义hooks_useinputhistory.md\":\"BzWdP5Ij\",\"react_ahooks_useeventemitter.md\":\"OluScTeX\",\"react_自定义hooks_usedebounce.md\":\"7ESFZNIZ\",\"electron_dll使用.md\":\"CGmPSJLR\",\"css3_现代web布局_19.md\":\"DIVJU0PC\",\"react_react好用的插件_react-fast-marquee.md\":\"ZhOvpApp\",\"guide_markdown语法.md\":\"BiAJoIJO\",\"nodejs_execa执行外部命令.md\":\"x2fLlbix\",\"nodejs_npkill快速查找删除node_modules.md\":\"CCmNiMZ0\",\"react_ahooks_usefullscreen.md\":\"BkgW8e5k\",\"react_自定义hooks_usesetparticalstate.md\":\"BUv_cnmS\",\"standard_css规范.md\":\"DeHg6jnS\",\"electron_数据持久缓存方案_数据持久缓存库lndb.md\":\"DJUK7UVx\",\"react_自定义组件_如何在react应用中建立错误处理层.md\":\"CNGgmToJ\",\"react_react搞定复杂项目状态管理_index.md\":\"BAj7---e\",\"typescript_晋级typescript高手，成为抢手的前端开发人才_第09章 深入infer、ts高级类型、泛型再进阶【全方位深度掌握 ts 泛型】.md\":\"C4bu5mph\",\"tools_idea 注释模板配置.md\":\"0gbuJbd6\",\"electron_基于electron-vite构建react桌面客户端.md\":\"DLOPvG7Q\",\"nodejs_release-it.md\":\"DMPaqLXc\",\"react_react实战_设计模式与最佳实践_react 状态管理（3）：mobx 使用模式.md\":\"Bm7xwY_i\",\"react_ahooks_usehistorytravel.md\":\"DiEJa1G5\",\"css3_现代web布局_21.md\":\"D2PeNBzk\",\"css3_现代web布局_11.md\":\"B10tI7m_\",\"react_antd使用踩坑经验汇总_tree组件.md\":\"CHpE5yvc\",\"electron_electron-builder.md\":\"DNL_pnq4\",\"standard_vue规范.md\":\"DyiLpRai\",\"electron_index.md\":\"BRqk3UrY\",\"react_自定义hooks_userouter.md\":\"LSydLgnY\",\"utils_rxjs.md\":\"C9QQC7cC\",\"standard_codereview代码审查.md\":\"vOhADmqT\",\"react_ahooks_userequest函数.md\":\"erWiB1Ub\",\"react_自定义hooks_usedebouncefn.md\":\"CD-kzD_X\",\"linux_linux常用命令.md\":\"D7RSIp22\",\"standard_commitlint.md\":\"Bc6BHMQJ\",\"react_自定义hooks_uselocationlisten.md\":\"lpoaVI0f\",\"standard_组件封装规范.md\":\"0Ow45yWm\",\"react_自定义hooks_useecharts.md\":\"GJwF9MkV\",\"nodejs_bluebird超高性能的promise库.md\":\"DY98ImvT\",\"react_react避坑指南_useref.md\":\"fBjuCQ9O\",\"electron_electron开发实战_electron环境搭建.md\":\"BaHlrXyB\",\"utils_index.md\":\"mk7T0j55\",\"react_自定义hooks_useevent.md\":\"Comn2-Er\",\"typescript_index.md\":\"Dcw9VPNE\",\"standard_git分支开发规范.md\":\"BIXsyTAc\",\"electron_三方库.md\":\"CAt92F-s\",\"react_react组件库搭建指南_01项目初始化.md\":\"hYE7GWll\",\"react_react好用的插件_jsbarcode.md\":\"CBTRcUAR\",\"electron_electron-react-boilerplate.md\":\"BzWSbABc\",\"react_自定义hooks_usemodal.md\":\"B_XFkn0G\",\"standard_editorconfig.md\":\"D8UrOG7b\",\"tools_git基本使用.md\":\"BvP_0S5g\",\"react_react避坑指南_闭包陷阱.md\":\"zChJGfX2\",\"standard_prettierrc.md\":\"BdHhuL9t\",\"standard_babelrc.md\":\"DxUrlX2l\",\"standard_eslint规范.md\":\"Mu3t4FWn\",\"react_react实战_设计模式与最佳实践_react 状态管理（4）：不同方式对比.md\":\"C3iD1iFV\",\"react_antd使用踩坑经验汇总_index.md\":\"DDsanD1T\",\"tools_yalc本地调试组件库方案.md\":\"BQ3H5AQN\",\"standard_json格式规范.md\":\"B3NuLvz_\",\"electron_配置讲解.md\":\"Bz4ASaED\",\"nodejs_index.md\":\"D6qsbk0v\",\"standard_node_cjs和esm混合开发.md\":\"DedlYZ1u\",\"css3_现代web布局_25.md\":\"DZBc6jqi\",\"standard_stylelint.md\":\"zaLGDP6-\",\"react_自定义hooks_useformmodal.md\":\"DRclMTXI\",\"standard_开源证书.md\":\"CNa1gXoD\",\"react_antd使用踩坑经验汇总_其他弹出层.md\":\"CYvGLZdo\",\"utils_baseinputnumber.md\":\"CCJr66pT\",\"guide_installation.md\":\"Cyna48DO\",\"utils_lodash.md\":\"B_LD-ulc\",\"standard_react规范.md\":\"BDzywc_U\",\"standard_sytlelint.md\":\"BHAGjA08\",\"tools_readme.md自动生成目录.md\":\"Doh9u-Eg\",\"react_自定义hooks_usememo.md\":\"CZgD0tn_\",\"standard_gitignore.md\":\"DGdE7Xq3\",\"react_react避坑指南_useeffect.md\":\"BNAb8N04\",\"nodejs_pkg打包node程序.md\":\"C_mVgg8Y\",\"standard_husky.md\":\"DWpB1fyF\",\"utils_calcutils.md\":\"QyONwp33\",\"tools_index.md\":\"CrRsxT5W\",\"standard_index.md\":\"zy5tYKLI\",\"react_自定义hooks_usemethods.md\":\"CLURCU9f\",\"react_自定义hooks_useloadscript.md\":\"CYcWRvSo\",\"tools_google快捷键.md\":\"mD76rDlK\",\"standard_package.json.md\":\"jsOo3MDQ\",\"standard_前端开发最佳实践总结.md\":\"BGrFiLKW\",\"react_自定义hooks_usesafestate.md\":\"m62ZMP2_\",\"standard_prettierignore.md\":\"VM68Ff5l\",\"react_react实战_设计模式与最佳实践_react 状态管理（2）：redux 使用模式.md\":\"CA0pcV96\",\"utils_mitt.md\":\"DG7F8qQl\",\"standard_gitlab.yml.md\":\"lN9PqoBe\",\"nodejs_minimist命令行参数解析.md\":\"Dx4gEgi2\",\"standard_命名规范.md\":\"DWUPIS4I\",\"react_自定义hooks_usepersistcallback.md\":\"FHXVMyDJ\",\"tools_windows终端优化.md\":\"DANvAyOj\",\"electron_ssl证书.md\":\"Q1dQBluF\",\"react_自定义组件_lazyload.md\":\"B9Bn4iLf\",\"react_自定义组件_keepalive.md\":\"YY9acXG_\",\"tools_常用node库.md\":\"DTeGhNPp\",\"standard_lint-staged.md\":\"DidcSpvQ\",\"css3_现代web布局_20.md\":\"DVP5FwHt\",\"guide_数字相关知识.md\":\"BRzTdbnI\",\"standard_圈复杂度.md\":\"B-UtHNKH\",\"tools_windows快捷键.md\":\"BFgiqO74\",\"standard_ts规范.md\":\"CiDbO0cg\",\"react_antd使用踩坑经验汇总_form表单.md\":\"DGT8jzsZ\",\"react_状态管理_zustand.md\":\"CQAFP37K\",\"react_react好用的插件_react-hook-form.md\":\"BsJSOnXN\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"zh-CN\",\"dir\":\"ltr\",\"title\":\"龙陌的博客\",\"description\":\"基于vite为基础搭建的风格脚手架,提供多种模板以便于更高效的解决业务需求！\",\"base\":\"/long-press/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"logo\":\"/logo.ico\",\"nav\":[{\"text\":\"💻 首页\",\"link\":\"/\"},{\"text\":\"💡 指南\",\"link\":\"/guide/\",\"activeMatch\":\"/guide/\"},{\"text\":\"🔧 编程工具\",\"link\":\"/tools/\"},{\"text\":\"🔧 常用工具类\",\"link\":\"/utils/\"},{\"text\":\"📋 前端规范\",\"link\":\"/standard/\"},{\"text\":\"⭐ React\",\"link\":\"/react/React实战,设计模式与最佳实践/\"},{\"text\":\"⭐ TypeScript\",\"link\":\"/typescript/\"},{\"text\":\"⭐ Css3\",\"link\":\"/css3/\"},{\"text\":\"⭐ Electron\",\"link\":\"/electron/\"},{\"text\":\"⭐ Linux\",\"link\":\"/linux/linux常用命令\",\"activeMatch\":\"/linux/\"}],\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://vitepress.vuejs.org/guide/getting-started\"},{\"icon\":{\"svg\":\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" aria-hidden=\\\"true\\\" role=\\\"img\\\" width=\\\"20\\\" height=\\\"20\\\"  viewBox=\\\"0 0 512 512\\\" >\\n    <path fill=\\\"currentColor\\\" d=\\\"M488.6 104.1c16.7 18.1 24.4 39.7 23.3 65.7v202.4c-.4 26.4-9.2 48.1-26.5 65.1c-17.2 17-39.1 25.9-65.5 26.7H92.02c-26.45-.8-48.21-9.8-65.28-27.2C9.682 419.4.767 396.5 0 368.2V169.8c.767-26 9.682-47.6 26.74-65.7C43.81 87.75 65.57 78.77 92.02 78h29.38L96.05 52.19c-5.75-5.73-8.63-13-8.63-21.79c0-8.8 2.88-16.06 8.63-21.797C101.8 2.868 109.1 0 117.9 0s16.1 2.868 21.9 8.603L213.1 78h88l74.5-69.397C381.7 2.868 389.2 0 398 0c8.8 0 16.1 2.868 21.9 8.603c5.7 5.737 8.6 12.997 8.6 21.797c0 8.79-2.9 16.06-8.6 21.79L394.6 78h29.3c26.4.77 48 9.75 64.7 26.1zm-38.8 69.7c-.4-9.6-3.7-17.4-10.7-23.5c-5.2-6.1-14-9.4-22.7-9.8H96.05c-9.59.4-17.45 3.7-23.58 9.8c-6.14 6.1-9.4 13.9-9.78 23.5v194.4c0 9.2 3.26 17 9.78 23.5s14.38 9.8 23.58 9.8H416.4c9.2 0 17-3.3 23.3-9.8c6.3-6.5 9.7-14.3 10.1-23.5V173.8zm-264.3 42.7c6.3 6.3 9.7 14.1 10.1 23.2V273c-.4 9.2-3.7 16.9-9.8 23.2c-6.2 6.3-14 9.5-23.6 9.5c-9.6 0-17.5-3.2-23.6-9.5c-6.1-6.3-9.4-14-9.8-23.2v-33.3c.4-9.1 3.8-16.9 10.1-23.2c6.3-6.3 13.2-9.6 23.3-10c9.2.4 17 3.7 23.3 10zm191.5 0c6.3 6.3 9.7 14.1 10.1 23.2V273c-.4 9.2-3.7 16.9-9.8 23.2c-6.1 6.3-14 9.5-23.6 9.5c-9.6 0-17.4-3.2-23.6-9.5c-7-6.3-9.4-14-9.7-23.2v-33.3c.3-9.1 3.7-16.9 10-23.2c6.3-6.3 14.1-9.6 23.3-10c9.2.4 17 3.7 23.3 10z\\\"></path>\\n  </svg>\"},\"link\":\"https://space.bilibili.com/248956095\"}],\"footer\":{\"copyright\":\"Copyright © 2024-present Longmo\"},\"sidebar\":{\"/\":[{\"text\":\"开始阅读\",\"collapsed\":false,\"items\":[{\"text\":\"阅读须知\",\"link\":\"/guide\"}]}],\"/tools/\":[{\"collapsed\":false,\"items\":[{\"text\":\"GitHub常用技巧\",\"link\":\"\\\\tools\\\\GitHub常用技巧.md\"},{\"text\":\"Google快捷键\",\"link\":\"\\\\tools\\\\Google快捷键.md\"},{\"text\":\"README.md自动生成目录\",\"link\":\"\\\\tools\\\\README.md自动生成目录.md\"},{\"text\":\"Rollup打包\",\"link\":\"\\\\tools\\\\Rollup打包.md\"},{\"text\":\"Runjs\",\"link\":\"\\\\tools\\\\Runjs.md\"},{\"text\":\"Vscode使用教程\",\"link\":\"\\\\tools\\\\Vscode使用教程.md\"},{\"text\":\"WebStorm快捷键\",\"link\":\"\\\\tools\\\\WebStorm快捷键.md\"},{\"text\":\"Windows快捷键\",\"link\":\"\\\\tools\\\\Windows快捷键.md\"},{\"text\":\"Windows测试IP端口\",\"link\":\"\\\\tools\\\\Windows测试IP端口.md\"},{\"text\":\"Windows终端优化\",\"link\":\"\\\\tools\\\\Windows终端优化.md\"},{\"text\":\"Yalc本地调试组件库方案\",\"link\":\"\\\\tools\\\\Yalc本地调试组件库方案.md\"},{\"text\":\"git基本使用\",\"link\":\"\\\\tools\\\\git基本使用.md\"},{\"text\":\"idea 注释模板配置\",\"link\":\"\\\\tools\\\\idea 注释模板配置.md\"},{\"text\":\"node各类命令\",\"link\":\"\\\\tools\\\\node各类命令.md\"},{\"text\":\"npm镜像源管理工具\",\"link\":\"\\\\tools\\\\npm镜像源管理工具.md\"},{\"text\":\"pnpm多包项目\",\"link\":\"\\\\tools\\\\pnpm多包项目.md\"},{\"text\":\"workspaces核心特性总结\",\"link\":\"\\\\tools\\\\workspaces核心特性总结.md\"},{\"text\":\"依赖镜像地址\",\"link\":\"\\\\tools\\\\依赖镜像地址.md\"},{\"text\":\"常用node库\",\"link\":\"\\\\tools\\\\常用node库.md\"},{\"text\":\"常用命令\",\"link\":\"\\\\tools\\\\常用命令.md\"},{\"text\":\"自动版本管理和生成CHANGELOG\",\"link\":\"\\\\tools\\\\自动版本管理和生成CHANGELOG.md\"},{\"text\":\"规范GIT代码提交信息\",\"link\":\"\\\\tools\\\\规范GIT代码提交信息.md\"},{\"text\":\"资源导航\",\"link\":\"\\\\tools\\\\资源导航.md\"}]}],\"/standard/\":[{\"collapsed\":false,\"items\":[{\"text\":\"CodeReview代码审查\",\"link\":\"\\\\standard\\\\CodeReview代码审查.md\"},{\"text\":\"Css规范\",\"link\":\"\\\\standard\\\\Css规范.md\"},{\"text\":\"Git分支开发规范\",\"link\":\"\\\\standard\\\\Git分支开发规范.md\"},{\"text\":\"Node_CJS和ESM混合开发\",\"link\":\"\\\\standard\\\\Node_CJS和ESM混合开发.md\"},{\"text\":\"React规范\",\"link\":\"\\\\standard\\\\React规范.md\"},{\"text\":\"babelrc\",\"link\":\"\\\\standard\\\\babelrc.md\"},{\"text\":\"commitlint\",\"link\":\"\\\\standard\\\\commitlint.md\"},{\"text\":\"editorconfig\",\"link\":\"\\\\standard\\\\editorconfig.md\"},{\"text\":\"eslint规范\",\"link\":\"\\\\standard\\\\eslint规范.md\"},{\"text\":\"fatherrc.ts配置文件\",\"link\":\"\\\\standard\\\\fatherrc.ts配置文件.md\"},{\"text\":\"gitignore\",\"link\":\"\\\\standard\\\\gitignore.md\"},{\"text\":\"gitlab.yml\",\"link\":\"\\\\standard\\\\gitlab.yml.md\"},{\"text\":\"git提交规范\",\"link\":\"\\\\standard\\\\git提交规范.md\"},{\"text\":\"husky\",\"link\":\"\\\\standard\\\\husky.md\"},{\"text\":\"json格式规范\",\"link\":\"\\\\standard\\\\json格式规范.md\"},{\"text\":\"lint-staged\",\"link\":\"\\\\standard\\\\lint-staged.md\"},{\"text\":\"package.json\",\"link\":\"\\\\standard\\\\package.json.md\"},{\"text\":\"prettier\",\"link\":\"\\\\standard\\\\prettier.md\"},{\"text\":\"prettierignore\",\"link\":\"\\\\standard\\\\prettierignore.md\"},{\"text\":\"prettierrc\",\"link\":\"\\\\standard\\\\prettierrc.md\"},{\"text\":\"pretty-quick\",\"link\":\"\\\\standard\\\\pretty-quick.md\"},{\"text\":\"stylelint\",\"link\":\"\\\\standard\\\\stylelint.md\"},{\"text\":\"sytlelint\",\"link\":\"\\\\standard\\\\sytlelint.md\"},{\"text\":\"tsconfig.json\",\"link\":\"\\\\standard\\\\tsconfig.json.md\"},{\"text\":\"ts规范\",\"link\":\"\\\\standard\\\\ts规范.md\"},{\"text\":\"typings.d.ts\",\"link\":\"\\\\standard\\\\typings.d.ts.md\"},{\"text\":\"vue规范\",\"link\":\"\\\\standard\\\\vue规范.md\"},{\"text\":\"前端开发最佳实践总结\",\"link\":\"\\\\standard\\\\前端开发最佳实践总结.md\"},{\"text\":\"命名规范\",\"link\":\"\\\\standard\\\\命名规范.md\"},{\"text\":\"圈复杂度\",\"link\":\"\\\\standard\\\\圈复杂度.md\"},{\"text\":\"开源证书\",\"link\":\"\\\\standard\\\\开源证书.md\"},{\"text\":\"组件封装规范\",\"link\":\"\\\\standard\\\\组件封装规范.md\"}]}],\"/aHooks/\":[],\"/utils/\":[{\"collapsed\":false,\"items\":[{\"text\":\"BaseInputNumber\",\"link\":\"\\\\utils\\\\BaseInputNumber.md\"},{\"text\":\"calcUtils\",\"link\":\"\\\\utils\\\\calcUtils.md\"},{\"text\":\"lodash\",\"link\":\"\\\\utils\\\\lodash.md\"},{\"text\":\"mitt\",\"link\":\"\\\\utils\\\\mitt.md\"},{\"text\":\"rxjs\",\"link\":\"\\\\utils\\\\rxjs.md\"}]}],\"/guide/\":[{\"text\":\"基础\",\"items\":[{\"text\":\"快速开始\",\"link\":\"/guide/quickstart\"},{\"text\":\"Markdown语法\",\"link\":\"/guide/Markdown语法\"}]},{\"text\":\"进阶\",\"items\":[{\"text\":\"打包指南\",\"link\":\"/guide/打包指南\"}]}],\"/react/\":{\"base\":\"/react/\",\"items\":[{\"text\":\"React基础\",\"base\":\"/react/\",\"collapsed\":false,\"items\":[{\"text\":\"Redux\",\"link\":\"Redux\"},{\"text\":\"React Hooks\",\"link\":\"React Hooks\"},{\"text\":\"ReactRouter\",\"link\":\"ReactRouter\"}]},{\"text\":\"Antd使用踩坑经验汇总\",\"base\":\"/react/Antd使用踩坑经验汇总/\",\"items\":[{\"text\":\"Form表单\",\"link\":\"Form表单\"},{\"text\":\"AntdTable表格\",\"link\":\"AntdTable表格\"},{\"text\":\"Tree树组件\",\"link\":\"Tree组件\"},{\"text\":\"其他弹出层\",\"link\":\"其他弹出层\"},{\"text\":\"Tabs选项卡\",\"link\":\"Tabs选项卡\"},{\"text\":\"Menu菜单\",\"link\":\"Menu菜单\"},{\"text\":\"Menu菜单\",\"link\":\"Menu菜单\"}]},{\"text\":\"CSS解决方案\",\"base\":\"/react/CSS解决方案/\",\"items\":[{\"text\":\"CSS Module\",\"link\":\"CSS_Module\"}]},{\"text\":\"ahooks\",\"link\":\"/aHooks/\"},{\"text\":\"自定义Hooks\",\"base\":\"/react/自定义Hooks/\",\"items\":[{\"text\":\"useRouter\",\"link\":\"useRouter\"},{\"text\":\"useLoadScript\",\"link\":\"useLoadScript\"},{\"text\":\"useInputHistory\",\"link\":\"useInputHistory\"},{\"text\":\"useSetParticalState\",\"link\":\"useSetParticalState\"},{\"text\":\"useFormModal\",\"link\":\"useFormModal\"},{\"text\":\"useCopy\",\"link\":\"useCopy\"},{\"text\":\"useIntersection\",\"link\":\"useIntersection\"},{\"text\":\"useModal\",\"link\":\"useModal\"},{\"text\":\"useInterval\",\"link\":\"useInterval\"},{\"text\":\"useModal\",\"link\":\"useModal\"},{\"text\":\"useModal\",\"link\":\"useModal\"}]},{\"text\":\"React实战：设计模式和最佳实践\",\"base\":\"/react/React实战,设计模式与最佳实践/\",\"collapsed\":true,\"items\":[{\"text\":\"React的设计思想\",\"link\":\"React的设计思想\"},{\"text\":\"组件实践（1）：如何定义清晰可维护的接口\",\"link\":\"组件实践（1）：如何定义清晰可维护的接口\"},{\"text\":\"组件实践（2）：组件的内部实现\",\"link\":\"组件实践（2）：组件的内部实现\"},{\"text\":\"组件实践（3）：组件化样式\",\"link\":\"组件实践（3）：组件化样式\"},{\"text\":\"组件设计模式（1）：聪明组件和傻瓜组件\",\"link\":\"组件设计模式（1）：聪明组件和傻瓜组件\"},{\"text\":\"组件设计模式（2）：高阶组件\",\"link\":\"组件设计模式（2）：高阶组件\"},{\"text\":\"组件设计模式（3）：render props 模式\",\"link\":\"组件设计模式（3）：render props 模式\"},{\"text\":\"组件设计模式（4）：提供者模式\",\"link\":\"组件设计模式（4）：提供者模式\"},{\"text\":\"组件设计模式（5）：组合组件\",\"link\":\"组件设计模式（5）：组合组件\"},{\"text\":\"React 单元测试\",\"link\":\"React 单元测试\"},{\"text\":\"React 状态管理（1）：组件状态\",\"link\":\"React 状态管理（1）：组件状态\"},{\"text\":\"React 状态管理（2）：Redux 使用模式\",\"link\":\"React 状态管理（2）：Redux 使用模式\"},{\"text\":\"React 状态管理（3）：Mobx 使用模式\",\"link\":\"React 状态管理（3）：Mobx 使用模式\"},{\"text\":\"React 状态管理（4）：不同方式对比\",\"link\":\"React 状态管理（4）：不同方式对比\"},{\"text\":\"路由的魔法：React Router\",\"link\":\"路由的魔法：React Router\"},{\"text\":\"服务器端渲染（1）：基本套路\",\"link\":\"服务器端渲染（1）：基本套路\"},{\"text\":\"服务器端渲染（2):理解Nextjs\",\"link\":\"服务器端渲染（2）理解NextJS\"},{\"text\":\"React 的未来（1）： 拥抱异步渲染\",\"link\":\"React 的未来（1）： 拥抱异步渲染\"},{\"text\":\"React 的未来（2）：Suspense 带来的异步操作革命\",\"link\":\"React 的未来（2）：Suspense 带来的异步操作革命\"},{\"text\":\"React 的未来（3）：函数化的 Hooks\",\"link\":\"React 的未来（3）：函数化的 Hooks\"}]},{\"text\":\"React搞定复杂项目状态管理\",\"base\":\"/react/React搞定复杂项目状态管理/\",\"collapsed\":false,\"items\":[]},{\"text\":\"React后台管理系统项目实战\",\"base\":\"/react/React后台管理系统项目实战/\",\"collapsed\":false,\"items\":[]},{\"text\":\"慕课网最新React技术栈，实战复杂低代码项目-仿问卷星\",\"base\":\"/react/慕课网最新React技术栈，实战复杂低代码项目-仿问卷星/\",\"collapsed\":false,\"items\":[]},{\"text\":\"React状态管理\",\"base\":\"/react/状态管理/\",\"collapsed\":false,\"items\":[{\"text\":\"zustand\",\"link\":\"zustand\"},{\"text\":\"zustand翻译文档\",\"link\":\"zustand翻译文档\"}]},{\"text\":\"开发一个组件库\",\"base\":\"/react/开发一个组件库/\",\"items\":[{\"text\":\"如何完善组件单测\",\"link\":\"如何完善组件单测\"},{\"text\":\"handlebars模板\",\"link\":\"handlebars模板\"}]},{\"text\":\"React好用的插件\",\"base\":\"/react/React好用的插件/\",\"items\":[{\"text\":\"js-pinyin\",\"link\":\"js-pinyin\"},{\"text\":\"jsbarcode\",\"link\":\"jsbarcode\"},{\"text\":\"react-jsx-parse\",\"link\":\"react-jsx-parse\"},{\"text\":\"react-load-script\",\"link\":\"react-load-script\"},{\"text\":\"react-to-print\",\"link\":\"react-to-print\"},{\"text\":\"react-viewer\",\"link\":\"react-viewer\"},{\"text\":\"react-hook-form\",\"link\":\"react-hook-form\"},{\"text\":\"react-window-infinite-loader\",\"link\":\"react-window-infinite-loader\"},{\"text\":\"react-window-infinite-loader\",\"link\":\"react-window-infinite-loader\"},{\"text\":\"react-window-infinite-loader\",\"link\":\"react-window-infinite-loader\"}]}]},\"/typescript/\":{\"base\":\"/typescript/\",\"items\":[{\"text\":\"TypeScript\",\"base\":\"/typescript/\",\"collapsed\":false,\"items\":[{\"text\":\"Redux\",\"link\":\"Redux\"}]},{\"text\":\"TS 从入门到深度掌握，晋级TypeScript高手实战课程\",\"base\":\"/typescript/TS 从入门到深度掌握，晋级TypeScript高手实战课程/\",\"collapsed\":false,\"items\":[{\"text\":\"第10章TS声明文件，TS模块.md\",\"link\":\"第10章TS声明文件，TS模块\"}]},{\"text\":\"晋级TypeScript高手，成为抢手的前端开发人才\",\"base\":\"/typescript/晋级TypeScript高手，成为抢手的前端开发人才/\",\"collapsed\":false,\"items\":[{\"text\":\"第07章 泛型类+泛型接口+泛型类约束的复杂应用【无比重要的深度技能】\",\"link\":\"第07章 泛型类+泛型接口+泛型类约束的复杂应用【无比重要的深度技能】\"},{\"text\":\"第08章 深度掌握泛型函数、泛型函数重载【无比重要的深度技能】\",\"link\":\"第08章 深度掌握泛型函数、泛型函数重载【无比重要的深度技能】\"},{\"text\":\"第09章 深入infer、TS高级类型、泛型再进阶【全方位深度掌握 TS 泛型】\",\"link\":\"第09章 深入infer、TS高级类型、泛型再进阶【全方位深度掌握 TS 泛型】\"},{\"text\":\"第08章 深度掌握泛型函数、泛型函数重载【无比重要的深度技能】\",\"link\":\"第08章 深度掌握泛型函数、泛型函数重载【无比重要的深度技能】\"}]}]},\"/css3/\":{\"base\":\"/css3/\",\"items\":[{\"text\":\"现代web布局\",\"base\":\"/css3/现代web布局/\",\"collapsed\":false,\"items\":[{\"text\":\"Web 布局技术演进：了解 Web 布局发展史\",\"link\":\"01\"},{\"text\":\"现代 Web 布局技术术语\",\"link\":\"02\"},{\"text\":\"Flexbox 布局基础使用\",\"link\":\"03\"},{\"text\":\"Flexbox 布局中的对齐方式\",\"link\":\"04\"},{\"text\":\"Flexbox 布局中的 flex 属性的基础运用\",\"link\":\"05\"},{\"text\":\"Flexbox 中的计算：通过扩展因子比例来扩展 Flex 项目\",\"link\":\"06\"},{\"text\":\"Flexbox 中的计算：通过收缩因子比例收缩 Flex 项目\",\"link\":\"07\"},{\"text\":\"Flexbox 布局中的 flex-basis：谁能决定 Flex 项目的大小？\",\"link\":\"08\"},{\"text\":\"使用 Flexbox 构建经典布局：10 种经典 Web 布局\",\"link\":\"09\"},{\"text\":\"10\",\"link\":\"10\"}]},{\"text\":\"postcss\",\"base\":\"/css3/postcss/\",\"collapsed\":false,\"items\":[{\"text\":\"postcss-prefix-selector增加统一作用域\",\"link\":\"postcss-prefix-selector增加统一作用域\"}]}]},\"/electron/\":{\"base\":\"/electron/\",\"items\":[{\"text\":\"electron开发实战\",\"base\":\"/electron/electron开发实战/\",\"collapsed\":false,\"items\":[{\"text\":\"Electron 环境搭建+前期准备\",\"link\":\"electron环境搭建\"},{\"text\":\"开发一个简单版的番茄钟\",\"link\":\"开发一个简单版的番茄钟\"},{\"text\":\"APP特性\",\"link\":\"App特性\"},{\"text\":\"原生GUI\",\"link\":\"原生GUI\"},{\"text\":\"使用NodeJs调用原生模块\",\"link\":\"使用NodeJs调用原生模块\"},{\"text\":\"释放前端想象力\",\"link\":\"释放前端想象力\"},{\"text\":\"Electron优化白屏\",\"link\":\"electron优化白屏\"},{\"text\":\"Electron应用打包\",\"link\":\"electron应用打包\"}]},{\"text\":\"Electron数据持久化方案\",\"base\":\"/electron/数据持久化方案/\",\"collapsed\":false,\"items\":[{\"text\":\"electron-store\",\"link\":\"electron-store\"},{\"text\":\"数据持久缓存库lndb\",\"link\":\"数据持久缓存库lndb\"}]},{\"text\":\"react中开发踩坑\",\"link\":\"/electron/react中开发踩坑\"}]}},\"outline\":{\"level\":[2,6],\"label\":\"本页目录\"},\"docFooter\":{\"prev\":\"上一篇\",\"next\":\"下一篇\"},\"lastUpdated\":{\"text\":\"上次更新\"},\"returnToTopLabel\":\"返回顶部\",\"darkModeSwitchLabel\":\"外观\",\"sidebarMenuLabel\":\"归档\",\"editLink\":{\"pattern\":\"https://github.com/xxx\",\"text\":\"在 github 上编辑此页\"},\"search\":{\"provider\":\"local\",\"options\":{\"translations\":{\"button\":{\"buttonText\":\"搜索文档\",\"buttonAriaLabel\":\"搜索文档\"},\"modal\":{\"noResultsText\":\"无法找到相关结果\",\"resetButtonTitle\":\"清除查询条件\",\"footer\":{\"selectText\":\"选择\",\"navigateText\":\"切换\"}}}}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":true}");</script>
    
  </body>
</html>